# Importación de librerías necesarias
import os
import sys
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import scipy.stats as stats
from scipy.stats import chi2_contingency
import statsmodels.api as sm
from statsmodels.formula.api import ols
import warnings
# Configuraciones iniciales
warnings.filterwarnings('ignore', category=FutureWarning)
pd.set_option('display.max_rows', None) # Configurar Pandas para mostrar todas las filas
pd.set_option('display.max_columns', None) # Configurar Pandas para mostrar todas las columnas
# Añadir directorios superiores para importaciones
sys.path.append('..')
# Importación de utilidades personalizadas
from src.utils.utils import *
from src.utils.preprocess import *
df = pd.read_excel('../data/raw/BBDD_gen.xlsx')
print("Dimensiones del DataFrame:", df.shape)
print("\nPrimeras filas del DataFrame:")
df.head()
Dimensiones del DataFrame: (898, 329) Primeras filas del DataFrame:
| Perfil | Perfil.1 | Perfil.2 | Perfil.3 | Perfil.4 | Perfil.5 | Perfil.6 | Perfil.7 | Perfil.8 | Perfil.9 | Patologia 1 | Patologia 1.1 | Patologia 1.2 | Patologia 1.3 | Patologia 1.4 | iB_Resport | iB_Resport.1 | iB_Resport.2 | iB_Resport.3 | iB_Resport.4 | iB_Resport.5 | iB_Resport.6 | iB_Resport.7 | iB_Resport.8 | iB_Resport.9 | iB_Resport.10 | iB_Resport.11 | iB_Resport.12 | iB_Resport.13 | iB_Resport.14 | iB_Resport.15 | iB_Resport.16 | iB_Resport.17 | iB_Resport.18 | iB_Resport.19 | RUNSCRIBE_WALK | RUNSCRIBE_WALK.1 | RUNSCRIBE_WALK.2 | RUNSCRIBE_WALK.3 | RUNSCRIBE_WALK.4 | RUNSCRIBE_WALK.5 | RUNSCRIBE_WALK.6 | RUNSCRIBE_WALK.7 | RUNSCRIBE_WALK.8 | RUNSCRIBE_WALK.9 | RUNSCRIBE_WALK.10 | RUNSCRIBE_WALK.11 | RUNSCRIBE_WALK.12 | RUNSCRIBE_WALK.13 | RUNSCRIBE_WALK.14 | RUNSCRIBE_WALK.15 | RUNSCRIBE_WALK.16 | RUNSCRIBE_WALK.17 | RUNSCRIBE_WALK.18 | RUNSCRIBE_WALK.19 | RUNSCRIBE_WALK.20 | RUNSCRIBE_WALK.21 | RUNSCRIBE_WALK.22 | RUNSCRIBE_WALK.23 | RUNSCRIBE_WALK.24 | RUNSCRIBE_WALK.25 | RUNSCRIBE_WALK.26 | RUNSCRIBE_WALK.27 | RUNSCRIBE_WALK.28 | RUNSCRIBE_WALK.29 | RUNSCRIBE_WALK.30 | RUNSCRIBE_WALK.31 | RUNSCRIBE_WALK.32 | RUNSCRIBE_WALK.33 | RUNSCRIBE_WALK.34 | RUNSCRIBE_WALK.35 | RUNSCRIBE_WALK.36 | RUNSCRIBE_WALK.37 | RUNSCRIBE_WALK.38 | RUNSCRIBE_WALK.39 | RUNSCRIBE_WALK.40 | RUNSCRIBE_WALK.41 | RUNSCRIBE_WALK.42 | RUNSCRIBE_WALK.43 | RUNSCRIBE_WALK.44 | RUNSCRIBE_WALK.45 | RUNSCRIBE_WALK.46 | RUNSCRIBE_WALK.47 | RUNSCRIBE_WALK.48 | RUNSCRIBE_WALK.49 | RUNSCRIBE_WALK.50 | RUNSCRIBE_WALK.51 | RUNSCRIBE_WALK.52 | RUNSCRIBE_WALK.53 | RUNSCRIBE_WALK.54 | RUNSCRIBE_WALK.55 | RUNSCRIBE_WALK.56 | RUNSCRIBE_WALK.57 | RUNSCRIBE_RUN | RUNSCRIBE_RUN.1 | RUNSCRIBE_RUN.2 | RUNSCRIBE_RUN.3 | RUNSCRIBE_RUN.4 | RUNSCRIBE_RUN.5 | RUNSCRIBE_RUN.6 | RUNSCRIBE_RUN.7 | RUNSCRIBE_RUN.8 | RUNSCRIBE_RUN.9 | RUNSCRIBE_RUN.10 | RUNSCRIBE_RUN.11 | RUNSCRIBE_RUN.12 | RUNSCRIBE_RUN.13 | RUNSCRIBE_RUN.14 | RUNSCRIBE_RUN.15 | RUNSCRIBE_RUN.16 | RUNSCRIBE_RUN.17 | RUNSCRIBE_RUN.18 | RUNSCRIBE_RUN.19 | RUNSCRIBE_RUN.20 | RUNSCRIBE_RUN.21 | RUNSCRIBE_RUN.22 | RUNSCRIBE_RUN.23 | RUNSCRIBE_RUN.24 | RUNSCRIBE_RUN.25 | RUNSCRIBE_RUN.26 | RUNSCRIBE_RUN.27 | RUNSCRIBE_RUN.28 | RUNSCRIBE_RUN.29 | RUNSCRIBE_RUN.30 | RUNSCRIBE_RUN.31 | RUNSCRIBE_RUN.32 | RUNSCRIBE_RUN.33 | RUNSCRIBE_RUN.34 | RUNSCRIBE_RUN.35 | RUNSCRIBE_RUN.36 | RUNSCRIBE_RUN.37 | RUNSCRIBE_RUN.38 | RUNSCRIBE_RUN.39 | RUNSCRIBE_RUN.40 | RUNSCRIBE_RUN.41 | RUNSCRIBE_RUN.42 | RUNSCRIBE_RUN.43 | RUNSCRIBE_RUN.44 | RUNSCRIBE_RUN.45 | RUNSCRIBE_RUN.46 | RUNSCRIBE_RUN.47 | RUNSCRIBE_RUN.48 | RUNSCRIBE_RUN.49 | RUNSCRIBE_RUN.50 | RUNSCRIBE_RUN.51 | RUNSCRIBE_RUN.52 | RUNSCRIBE_RUN.53 | RUNSCRIBE_RUN.54 | RUNSCRIBE_RUN.55 | RUNSCRIBE_RUN.56 | RUNSCRIBE_RUN.57 | iB_Resport.20 | iB_Resport.21 | iB_Resport.22 | iB_Resport.23 | iB_Resport.24 | iB_Resport.25 | iB_Resport.26 | iB_Resport.27 | iB_Resport.28 | iB_Resport.29 | iB_Resport.30 | iB_Resport.31 | iB_Resport.32 | iB_Resport.33 | iB_Resport.34 | iB_Resport.35 | iB_Resport.36 | iB_Resport.37 | iB_Resport.38 | iB_Resport.39 | iB_Resport.40 | iB_Resport.41 | iB_Resport.42 | iB_Resport.43 | iB_Resport.44 | iB_Resport.45 | iB_Resport.46 | iB_Resport.47 | iB_Resport.48 | iB_Resport.49 | iB_Resport.50 | iB_Resport.51 | iB_Resport.52 | iB_Resport.53 | iB_Resport.54 | iB_Resport.55 | iB_Resport.56 | iB_Resport.57 | iB_Resport.58 | iB_Resport.59 | iB_Resport.60 | iB_Resport.61 | iB_Resport.62 | iB_Resport.63 | iB_Resport.64 | iB_Resport.65 | iB_Resport.66 | iB_Resport.67 | iB_Resport.68 | iB_Resport.69 | iB_Resport.70 | iB_Resport.71 | iB_Resport.72 | iB_Resport.73 | iB_Resport.74 | iB_Resport.75 | iB_Resport.76 | iB_Resport.77 | iB_Resport.78 | iB_Resport.79 | iB_Resport.80 | iB_Resport.81 | iB_Resport.82 | iB_Resport.83 | iB_Resport.84 | iB_Resport.85 | iB_Resport.86 | iB_Resport.87 | iB_Resport.88 | iB_Resport.89 | iB_Resport.90 | iB_Resport.91 | iB_Resport.92 | iB_Resport.93 | iB_Resport.94 | iB_Resport.95 | iB_Resport.96 | iB_Resport.97 | iB_Resport.98 | iB_Resport.99 | iB_Resport.100 | iB_Resport.101 | iB_Resport.102 | iB_Resport.103 | iB_Resport.104 | iB_Resport.105 | iB_Resport.106 | iB_Resport.107 | iB_Resport.108 | iB_Resport.109 | iB_Resport.110 | iB_Resport.111 | iB_Resport.112 | iB_Resport.113 | iB_Resport.114 | iB_Resport.115 | iB_Resport.116 | iB_Resport.117 | iB_Resport.118 | iB_Resport.119 | iB_Resport.120 | iB_Resport.121 | iB_Resport.122 | iB_Resport.123 | iB_Resport.124 | iB_Resport.125 | iB_Resport.126 | iB_Resport.127 | iB_Resport.128 | iB_Resport.129 | iB_Resport.130 | iB_Resport.131 | iB_Resport.132 | iB_Resport.133 | iB_Resport.134 | iB_Resport.135 | iB_Resport.136 | iB_Resport.137 | iB_Resport.138 | iB_Resport.139 | iB_Resport.140 | iB_Resport.141 | iB_Resport.142 | iB_Resport.143 | iB_Resport.144 | iB_Resport.145 | iB_Resport.146 | iB_Resport.147 | iB_Resport.148 | iB_Resport.149 | iB_Resport.150 | iB_Resport.151 | iB_Resport.152 | iB_Resport.153 | iB_Resport.154 | iB_Resport.155 | iB_Resport.156 | iB_Resport.157 | iB_Resport.158 | iB_Resport.159 | iB_Resport.160 | iB_Resport.161 | iB_Resport.162 | iB_Resport.163 | iB_Resport.164 | iB_Resport.165 | iB_Resport.166 | iB_Resport.167 | iB_Resport.168 | iB_Resport.169 | iB_Resport.170 | iB_Resport.171 | iB_Resport.172 | iB_Resport.173 | iB_Resport.174 | iB_Resport.175 | iB_Resport.176 | iB_Resport.177 | iB_Resport.178 | iB_Resport.179 | iB_Resport.180 | iB_Resport.181 | iB_Resport.182 | iB_Resport.183 | iB_Resport.184 | iB_Resport.185 | iB_Resport.186 | iB_Resport.187 | iB_Resport.188 | iB_Resport.189 | iB_Resport.190 | iB_Resport.191 | iB_Resport.192 | iB_Resport.193 | iB_Resport.194 | iB_Resport.195 | iB_Resport.196 | iB_Resport.197 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Codigo | Sujeto | Fecha Nacimiento | Fecha de exploración | Edad | Sexo | Altura | Peso | Nº de calzado | Motivo de consulta | NºPatologia | Articulación | Localizacion | Lado | Patologia | Enf Sistemicas 1 | Enfermedades Sistemicas 2 | Sintomas narrados | Diagnóstico 1 | Dagnóstico 2 | IQ | Fecha IQ | Resultado IQ | Tabaco | Alcohol | Medicación | Fármacos | Alergias | Alergenos | Actividad principal | Marca 10K | Especialidad | km/sem | Calzado 1 | Calzado 2 | Pace | Velocidad | Step Rate | Stride Length | Contact Time | Flight Ratio | Power | Shock | Impact Gs | Braking Gs | Footstrike Type | Pronation Excursion | Max Pronation Velocity | Peak Vertical GRF | Contact Ratio | Flight Time | Stride Angle | Leg Spring Stiffness | Vertical Spring Stiffness | Vertical GRF Rate | Horizontal GRF Rate | Swing Force Rate | VO<sub>2</sub> | Total Force Rate | Time (Max Swing->FS) | Time (FS->MPV) | Time (MPV->MP) | Time (MP->TO) | Time (Min Swing->Max Swing) | Time (TO->Min Swing) | Medio Lateral Gs | Braking Gs (Amplitude) | Impact Gs (Amplitude) | Vertical Speed | Elevation Gain | Yaw Excursion | Swing Excursion | Yaw Excursion (MP->TO) | Yaw Excursion (Swing) | Max Stance Velocity (FS->MP) | Max Stance Velocity (MP->TO) | Step Length | Pronation Excursion (MP->TO) | Stance Excursion (FS->MP) | Stance Excursion (MP->TO) | Min Tilt | Max Tilt | Min Obliquity | Max Obliquity | Min Rotation | Max Rotation | Max Tilt Rate | Max Obliquity Rate | Max Rotation Rate | Vertical Oscillation | Braking Gs2 | Impact Gs2 | Medio Lateral Gs2 | Pace | Velocidad | Step Rate | Stride Length | Contact Time | Flight Ratio | Power | Shock | Impact Gs | Braking Gs | Footstrike Type | Pronation Excursion | Max Pronation Velocity | Peak Vertical GRF | Contact Ratio | Flight Time | Stride Angle | Leg Spring Stiffness | Vertical Spring Stiffness | Vertical GRF Rate | Horizontal GRF Rate | Swing Force Rate | VO<sub>2</sub> | Total Force Rate | Time (Max Swing->FS) | Time (FS->MPV) | Time (MPV->MP) | Time (MP->TO) | Time (Min Swing->Max Swing) | Time (TO->Min Swing) | Medio Lateral Gs | Braking Gs (Amplitude) | Impact Gs (Amplitude) | Vertical Speed | Elevation Gain | Yaw Excursion | Swing Excursion | Yaw Excursion (MP->TO) | Yaw Excursion (Swing) | Max Stance Velocity (FS->MP) | Max Stance Velocity (MP->TO) | Step Length | Pronation Excursion (MP->TO) | Stance Excursion (FS->MP) | Stance Excursion (MP->TO) | Min Tilt | Max Tilt | Min Obliquity | Max Obliquity | Min Rotation | Max Rotation | Max Tilt Rate | Max Obliquity Rate | Max Rotation Rate | Vertical Oscillation | Braking Gs2 | Impact Gs2 | Medio Lateral Gs2 | M1 Hipermovil | TF Normal | TT Normal | AP Adducto | Thomas Psoas | Thomas RF | Thomas TFL | Ober | AP_Varo | AP_Neutro | AP_Valgo | RP_Varo | RP_Neutro | RP_Valgo | Arco normal | Arco Aplanado | Arco elevado | PIe cavo posterior | PIe cavo anterior | M1 DFx | M5 Hipermovil | M5 Dfx | Arco transverso disminuido | M1 PFx | Cavo Col medial | M5 PFx | Cavo col Lateral | Arco transverso aumentado | MTF1 Normal | HLF | HL | HR | HAV | Index Minus | Index plus-minus | Index Plus | Col lat corta | Col lat larga | Pie griego | Pie cuadrado | Pie egipcio | TFI | TFE | TTI | TTE | AP Normal ABD-AD | AP Abducto | Pierna Corta | Rot Ext Cadera Izquierda | Rot Ext Cadera Derecha | Rot Int Cadera Derecha | Rot Int Cadera Izquierda | Dismetría | Ober Friccion | Popliteo | POPLITEO CL Neutra | PNCA AP Varo | PNCA AP Neutro | PNCA AP Valgo | PNCA RP Varo | PNCA RP Neutro | PNCA RP Valgo | T_Hintermann | Jack Normal | Jack R aumentada | Jack No reconstruye | Jack R disminuida | Pron max Normal | Pronación no disponible | 2Heel Raise | Heel Raise | FPI_1_I | FPI_1_D | FPI_2_I | FPI_2_D | FPI_3_I | FPI_3_D | FPI_4_I | FPI_4_D | FPI_5_I | FPI_5_D | FPI_6_I | FPI_6_D | FPI_Total_I | FPI_Total_D | Tibia vara proximal | Tibia Vara distal | Rotula divergente | Rotula descendida | Rotula convergente | Rotula ascencida | Valgo-Varo_I | Genu valgo | Genu normal | Genu varo | Genu recurvatum | Genu neutro | Genu flexum | Pelvis AV | Rot_Pelvis_Izda | EIAS_Down_Izda | Iliaco Izquierdo Normal | Iliaco Dcho Normal | Iliaco Izquierdo AV | Iliaco Izquierdo RV | Iliaco Dcho AV | Iliaco Dcho RV | EIAS_Up_Izda | EIAS_Up_Dcha | Hiperlordosis cervical | Hipercifosis torácica | Hiperlordosis lumbar | Antepulsión torax | Antepulsión pelvis | Retropulsion Pelvis | Rectificación lumbar | Retropulsion Torax | Dorso plano | Rectificación Cervical | GAZE Elevada | GAZE Disminuida | Retrognatismo | Prognatismo | Inclinación izquierda cabeza | Escoliosis Cervical Izquierda | Escoliosis Cervical Derecha | Escoliosis Dorsal Derecha | Escoliosis Dorsal Izquierda | Escoliosis Lumbar Izquierda | Escoliosis Lumbar Derecha | Escoliosis Rotación toracica derecha | Escoliosis Rotación toracica izquierda | Rotación izquierda cabeza | Rotación derecha cabeza | Rotación derecha torax | Rotación izquierda torax | Antepulsion Cabeza | Inclinación derecha cabeza | Lateropulsión cabeza derecha | Lateropulsión cabeza izquierda | Lateropulsión torax izquierda | Lateropulsión pelvis derecha | Lateropulsión pelvis izquierda | EIPS_Down_Izda | EIPS_Up_I | EIPS_Up_Dcha | EIPS_Down_Dcha | EIAS_Down_Dcha | Lateropulsión torax derecha | Descenso hombro izquierdo | Elevación Hombro Izquierdo | Elevación hombro derecho | Descenso hombro derecho | Retropulsión Cabeza | Lunge | Impresión Diagnóstica de función | Pruebas complementarias | Calzado | Escaneo 0% | Escaneo 25% | Escaneo 50% | Escaneo 75% | Escaneo 100% | TPU | TPU Run | PA12 Anterocapital | PA12 Retro | Elementos en taller | Fisioterapia y ejercicios | Pelvis Rot Dcha | Videoconferencia con informe | Llamar cuando lleguen plantillas | Lunge Izq | Lunge Dcho | Telemetría | Solo informe | Elementos en Diseño | entrega y revisiones |
| 1 | R00001MVE | 1 | 1985-08-23 00:00:00 | 2021-11-04 16:58:00 | 36 | F | 173 | 65 | 40 | NaN | 1 | Rodilla | Medial | Bilateral | NaN | NaN | NaN | El último tto ortopodologíco era por dolor de ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.2916 | 5 | 108.456898 | 1.4267 | 705.166667 | 0 | 95.981481 | 3.566339 | 2.310324 | 2.610172 | 6.314815 | -11.106498 | 177.510574 | 1.139044 | 127.44998 | -152.018519 | 9.059576 | 0.453526 | 0 | 13.915741 | 2.530533 | 0.030474 | 6.644113 | 24.95212 | 192.62963 | 19.203704 | 83.351852 | 602.611111 | 360.574074 | 21.62963 | 0.514759 | 2.155093 | 2.3125 | 0 | 16.300926 | 1.901933 | 65.427959 | 1.383976 | 4.583635 | 296.292913 | 484.714089 | 0.7133 | -14.72513 | 19.445907 | 62.315404 | -5.298624 | 4.002906 | -3.565694 | 5.716446 | -3.094924 | 2.38832 | 74.536365 | 49.889465 | 93.90372 | 30.344643 | 2.610172 | 2.310324 | NaN | 2.748551 | 10 | 161.715795 | 2.039509 | 346.164557 | 6.593809 | 176.417722 | 11.974009 | 10.824272 | 5.054195 | 7.822785 | -13.776322 | 477.409271 | 2.289862 | 93.300849 | 24.468354 | 0.186361 | 7.51902 | 21.803643 | 28.354237 | 5.432238 | 1.294939 | 32.53777 | 88.931286 | 55.556962 | 16.734177 | 61.088608 | 268.341772 | 271.746835 | 94.531646 | 2.070516 | 3.357595 | 3.802215 | -1.929742 | 15.512712 | 7.703537 | 82.954129 | 2.11393 | 14.237558 | 604.251908 | 563.98648 | 1.019748 | -11.32853 | 15.311133 | 64.305786 | -13.403779 | 6.502495 | -7.475044 | 6.877642 | -9.27995 | 6.648964 | 1195.82189 | 455.488825 | 354.309651 | 9.463862 | 5.054195 | 10.824272 | NaN | No | No | No | No | Negativo | Negativo | Negativo | Negativo | Bilateral | No | No | No | Bilateral | No | No | No | Bilateral | No | Bilateral | No | No | No | No | No | No | No | No | No | Bilateral | No | No | No | Bilateral | Bilateral | No | No | No | No | No | No | Bilateral | No | Bilateral | No | Bilateral | Bilateral | No | No | NaN | NaN | NaN | NaN | NaN | Negativo | Negativo | NaN | No | Bilateral | No | No | Bilateral | No | Izquierda | Bilateral | No | No | No | Bilateral | No | No | No | 0 | 0 | 0 | 0 | 0 | 0 | -1 | -1 | 0 | 0 | 0 | 0 | -1 | -1 | No | No | No | No | No | No | NaN | No | Bilateral | No | Bilateral | No | No | NaN | NaN | NaN | Si | Si | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Derecho | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 2 | R00002JVM | 2 | 1986-07-06 00:00:00 | 2021-11-04 17:41:00 | 35 | M | 181 | 78 | 44 | NaN | 0 | Sin afectacion | Sin afectacion | Ninguno | NaN | NaN | NaN | Bunion dorsal bilateral \nLunge 16º bilateral ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Si | Antihistamínicos | Si | Polen, ácaros del polvo, gato | Run, ciclismo | 45 | NaN | NaN | Nike kiger | NaN | 1.370079 | 5 | 114.767847 | 1.4312 | 649.517241 | 0 | 136.534483 | 3.119538 | 1.900867 | 2.387259 | 6.948276 | -8.176466 | 109.542317 | 1.222143 | 124.224798 | -126.896552 | 6.403624 | 48.715603 | 0 | 15.115353 | 2.673316 | 0.159367 | 8.925714 | 30.589598 | 121.245614 | 42.37931 | 78.62069 | 528.517241 | 339.724138 | 34.793103 | 0.637391 | 1.323276 | 1.306034 | -0.457 | 14 | 0.185619 | 63.307126 | 2.467419 | 3.750284 | 241.020467 | 532.549636 | 0.7156 | 0.962024 | 17.340533 | 55.030184 | -4.251966 | 2.401577 | -3.402549 | 3.958606 | -3.100207 | 4.067394 | 59.523014 | 34.808347 | 45.384226 | 23.901517 | 2.387259 | 1.900867 | NaN | 3.588932 | 13 | 172.110955 | 2.502031 | 242.541176 | 30.331614 | 283.164706 | 15.401995 | 14.331714 | 5.501979 | 10.082353 | -12.668764 | 686.949965 | 3.752896 | 69.573162 | 105.623529 | 2.512311 | 11.643407 | 23.714214 | 40.468636 | 6.976227 | 1.371845 | 40.873994 | 109.528792 | 105.376471 | 18.929412 | 37.129412 | 186.482353 | 269.882353 | 150.2 | 1.453265 | 5.445588 | 10.158088 | -2.136398 | 12.955882 | 7.324649 | 103.497258 | -3.406445 | 1.338612 | 886.819999 | 736.709414 | 1.251029 | 0.245774 | 9.668947 | 71.08696 | -19.167448 | 27.243976 | -76.367202 | 174.473553 | -6.524156 | 8.45474 | 1073.74018 | 549.242193 | 338.780492 | 7.520066 | 5.501979 | 14.331714 | NaN | Bilateral | Bilateral | Bilateral | No | Negativo | Bilateral | Bilateral | Negativo | No | Bilateral | No | No | Bilateral | No | Bilateral | No | No | No | Bilateral | No | No | No | No | Bilateral | No | No | Derecha | Derecha | No | No | Bilateral | No | No | Bilateral | No | No | No | No | No | No | Bilateral | No | No | No | No | Bilateral | No | No | NaN | NaN | NaN | NaN | NaN | Negativo | Negativo | NaN | No | Bilateral | No | No | Bilateral | No | No | No | Bilateral | No | No | Bilateral | No | No | No | 2 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 7 | 7 | No | No | No | No | No | No | NaN | Bilateral | No | No | No | Bilateral | No | NaN | NaN | NaN | Si | Si | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Bilateral | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 3 | R00004EPC | 4 | 1976-03-01 00:00:00 | 2021-11-15 13:40:00 | 45 | M | 189 | 88 | 46 | NaN | 0 | Sin afectacion | Sin afectacion | Ninguno | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.371909 | 5 | 100.149777 | 1.6437 | 775.744681 | 0 | 100.787234 | 2.368494 | 1.597828 | 1.558757 | 10.680851 | -4.411249 | 144.662411 | 1.091726 | 129.442638 | -176.595745 | 10.637696 | 7.981094 | 0 | 12.657472 | 2.785581 | 0.29757 | 9.790736 | 32.726926 | 106.680851 | 5.255319 | 37.106383 | 733.382979 | 370.574468 | 27 | 0.537651 | 1.611702 | 1.25 | -10.9844 | 3.597826 | 0.924553 | 82.060187 | 3.086117 | 8.109723 | 283.071966 | 564.581687 | 0.8218 | 0.192496 | 8.006323 | 77.799223 | -3.718124 | 4.023933 | -3.135851 | 3.355565 | -3.749373 | 2.686873 | 31.332204 | 40.367898 | 29.675547 | 19.19568 | 1.558757 | 1.597828 | NaN | 3.237176 | 12 | 161.586499 | 2.412864 | 312.8875 | 15.662497 | 295.075 | 12.238623 | 11.182911 | 4.905526 | 8.6625 | -5.597087 | 370.364379 | 2.753032 | 84.248189 | 58.0875 | 0.808101 | 7.467717 | 19.412686 | 31.394826 | 6.489825 | 1.383789 | 36.559321 | 98.867903 | 63.2125 | 20.5625 | 14.6125 | 277.7125 | 271.5125 | 120.3875 | 0.70904 | 3.246875 | 3.046094 | -2.040584 | 4.363636 | 4.281259 | 93.967785 | 3.72618 | 5.314272 | 608.752448 | 695.496367 | 1.206434 | 4.629309 | 13.068565 | 64.478919 | -4.481001 | 4.663599 | -4.560628 | 4.030698 | -8.582659 | 6.3752 | 287.748406 | 329.644999 | 238.683496 | 9.743993 | 4.905526 | 11.182911 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 4 | R00005DCM | 5 | 1978-12-23 00:00:00 | 2021-11-15 12:33:00 | 43 | M | 182 | 70 | 44 | NaN | 1 | Pie | Medial | Derecho | NaN | NaN | NaN | Año - año y medio con dolor en la cadera con d... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Saucony | NaN | 1.318286 | 5 | 103.976334 | 1.5381 | 733.48 | 0 | 101.42 | 2.667928 | 1.708754 | 1.985392 | 11.18 | -4.351264 | 123.764646 | 1.149516 | 127.091716 | -156.42 | 8.991884 | 598.235028 | 0 | 13.385676 | 2.615824 | 0.145732 | 7.967042 | 28.22087 | 148.78 | 15.72 | 31.96 | 685.8 | 358.94 | 38.8 | 0.841172 | 1.4325 | 1.74 | -22.5 | 3.038462 | -0.290622 | 91.4922 | 5.121574 | 15.046578 | 264.414068 | 466.721194 | 0.769 | 6.506884 | 7.471882 | 81.783758 | -4.479488 | 3.6198 | -3.219069 | 4.110612 | -2.138488 | 2.685047 | 30.340461 | 56.140367 | 49.883676 | 37.758259 | 1.985392 | 1.708754 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Bilateral | Bilateral | No | Bilateral | Negativo | Bilateral | Negativo | Negativo | No | Bilateral | No | No | Bilateral | No | Bilateral | No | No | No | Bilateral | Bilateral | No | No | No | No | No | No | Bilateral | No | Bilateral | No | No | No | No | Bilateral | No | No | No | No | No | No | Bilateral | No | No | No | Bilateral | No | No | Derecha | NaN | NaN | NaN | NaN | NaN | Negativo | Negativo | NaN | No | Bilateral | No | No | No | Bilateral | No | Bilateral | No | No | No | Bilateral | No | No | No | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 1 | 1 | 7 | 7 | No | No | No | No | No | No | NaN | No | Bilateral | No | Bilateral | No | No | NaN | NaN | Si | Si | NaN | NaN | NaN | Si | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Si | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Negativo | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
# print("Nombres de columnas:", df.columns.tolist())
# Establecer la primera fila como el nuevo encabezado
new_header = df.iloc[0] # La primera fila será el encabezado
df = df[1:] # Seleccionar los datos a partir de la segunda fila
df.columns = new_header # Establecer los nuevos nombres de columnas
df.reset_index(drop=True, inplace=True) # Restablecer el índice del DataFrame
df.head()
| Codigo | Sujeto | Fecha Nacimiento | Fecha de exploración | Edad | Sexo | Altura | Peso | Nº de calzado | Motivo de consulta | NºPatologia | Articulación | Localizacion | Lado | Patologia | Enf Sistemicas 1 | Enfermedades Sistemicas 2 | Sintomas narrados | Diagnóstico 1 | Dagnóstico 2 | IQ | Fecha IQ | Resultado IQ | Tabaco | Alcohol | Medicación | Fármacos | Alergias | Alergenos | Actividad principal | Marca 10K | Especialidad | km/sem | Calzado 1 | Calzado 2 | Pace | Velocidad | Step Rate | Stride Length | Contact Time | Flight Ratio | Power | Shock | Impact Gs | Braking Gs | Footstrike Type | Pronation Excursion | Max Pronation Velocity | Peak Vertical GRF | Contact Ratio | Flight Time | Stride Angle | Leg Spring Stiffness | Vertical Spring Stiffness | Vertical GRF Rate | Horizontal GRF Rate | Swing Force Rate | VO<sub>2</sub> | Total Force Rate | Time (Max Swing->FS) | Time (FS->MPV) | Time (MPV->MP) | Time (MP->TO) | Time (Min Swing->Max Swing) | Time (TO->Min Swing) | Medio Lateral Gs | Braking Gs (Amplitude) | Impact Gs (Amplitude) | Vertical Speed | Elevation Gain | Yaw Excursion | Swing Excursion | Yaw Excursion (MP->TO) | Yaw Excursion (Swing) | Max Stance Velocity (FS->MP) | Max Stance Velocity (MP->TO) | Step Length | Pronation Excursion (MP->TO) | Stance Excursion (FS->MP) | Stance Excursion (MP->TO) | Min Tilt | Max Tilt | Min Obliquity | Max Obliquity | Min Rotation | Max Rotation | Max Tilt Rate | Max Obliquity Rate | Max Rotation Rate | Vertical Oscillation | Braking Gs2 | Impact Gs2 | Medio Lateral Gs2 | Pace | Velocidad | Step Rate | Stride Length | Contact Time | Flight Ratio | Power | Shock | Impact Gs | Braking Gs | Footstrike Type | Pronation Excursion | Max Pronation Velocity | Peak Vertical GRF | Contact Ratio | Flight Time | Stride Angle | Leg Spring Stiffness | Vertical Spring Stiffness | Vertical GRF Rate | Horizontal GRF Rate | Swing Force Rate | VO<sub>2</sub> | Total Force Rate | Time (Max Swing->FS) | Time (FS->MPV) | Time (MPV->MP) | Time (MP->TO) | Time (Min Swing->Max Swing) | Time (TO->Min Swing) | Medio Lateral Gs | Braking Gs (Amplitude) | Impact Gs (Amplitude) | Vertical Speed | Elevation Gain | Yaw Excursion | Swing Excursion | Yaw Excursion (MP->TO) | Yaw Excursion (Swing) | Max Stance Velocity (FS->MP) | Max Stance Velocity (MP->TO) | Step Length | Pronation Excursion (MP->TO) | Stance Excursion (FS->MP) | Stance Excursion (MP->TO) | Min Tilt | Max Tilt | Min Obliquity | Max Obliquity | Min Rotation | Max Rotation | Max Tilt Rate | Max Obliquity Rate | Max Rotation Rate | Vertical Oscillation | Braking Gs2 | Impact Gs2 | Medio Lateral Gs2 | M1 Hipermovil | TF Normal | TT Normal | AP Adducto | Thomas Psoas | Thomas RF | Thomas TFL | Ober | AP_Varo | AP_Neutro | AP_Valgo | RP_Varo | RP_Neutro | RP_Valgo | Arco normal | Arco Aplanado | Arco elevado | PIe cavo posterior | PIe cavo anterior | M1 DFx | M5 Hipermovil | M5 Dfx | Arco transverso disminuido | M1 PFx | Cavo Col medial | M5 PFx | Cavo col Lateral | Arco transverso aumentado | MTF1 Normal | HLF | HL | HR | HAV | Index Minus | Index plus-minus | Index Plus | Col lat corta | Col lat larga | Pie griego | Pie cuadrado | Pie egipcio | TFI | TFE | TTI | TTE | AP Normal ABD-AD | AP Abducto | Pierna Corta | Rot Ext Cadera Izquierda | Rot Ext Cadera Derecha | Rot Int Cadera Derecha | Rot Int Cadera Izquierda | Dismetría | Ober Friccion | Popliteo | POPLITEO CL Neutra | PNCA AP Varo | PNCA AP Neutro | PNCA AP Valgo | PNCA RP Varo | PNCA RP Neutro | PNCA RP Valgo | T_Hintermann | Jack Normal | Jack R aumentada | Jack No reconstruye | Jack R disminuida | Pron max Normal | Pronación no disponible | 2Heel Raise | Heel Raise | FPI_1_I | FPI_1_D | FPI_2_I | FPI_2_D | FPI_3_I | FPI_3_D | FPI_4_I | FPI_4_D | FPI_5_I | FPI_5_D | FPI_6_I | FPI_6_D | FPI_Total_I | FPI_Total_D | Tibia vara proximal | Tibia Vara distal | Rotula divergente | Rotula descendida | Rotula convergente | Rotula ascencida | Valgo-Varo_I | Genu valgo | Genu normal | Genu varo | Genu recurvatum | Genu neutro | Genu flexum | Pelvis AV | Rot_Pelvis_Izda | EIAS_Down_Izda | Iliaco Izquierdo Normal | Iliaco Dcho Normal | Iliaco Izquierdo AV | Iliaco Izquierdo RV | Iliaco Dcho AV | Iliaco Dcho RV | EIAS_Up_Izda | EIAS_Up_Dcha | Hiperlordosis cervical | Hipercifosis torácica | Hiperlordosis lumbar | Antepulsión torax | Antepulsión pelvis | Retropulsion Pelvis | Rectificación lumbar | Retropulsion Torax | Dorso plano | Rectificación Cervical | GAZE Elevada | GAZE Disminuida | Retrognatismo | Prognatismo | Inclinación izquierda cabeza | Escoliosis Cervical Izquierda | Escoliosis Cervical Derecha | Escoliosis Dorsal Derecha | Escoliosis Dorsal Izquierda | Escoliosis Lumbar Izquierda | Escoliosis Lumbar Derecha | Escoliosis Rotación toracica derecha | Escoliosis Rotación toracica izquierda | Rotación izquierda cabeza | Rotación derecha cabeza | Rotación derecha torax | Rotación izquierda torax | Antepulsion Cabeza | Inclinación derecha cabeza | Lateropulsión cabeza derecha | Lateropulsión cabeza izquierda | Lateropulsión torax izquierda | Lateropulsión pelvis derecha | Lateropulsión pelvis izquierda | EIPS_Down_Izda | EIPS_Up_I | EIPS_Up_Dcha | EIPS_Down_Dcha | EIAS_Down_Dcha | Lateropulsión torax derecha | Descenso hombro izquierdo | Elevación Hombro Izquierdo | Elevación hombro derecho | Descenso hombro derecho | Retropulsión Cabeza | Lunge | Impresión Diagnóstica de función | Pruebas complementarias | Calzado | Escaneo 0% | Escaneo 25% | Escaneo 50% | Escaneo 75% | Escaneo 100% | TPU | TPU Run | PA12 Anterocapital | PA12 Retro | Elementos en taller | Fisioterapia y ejercicios | Pelvis Rot Dcha | Videoconferencia con informe | Llamar cuando lleguen plantillas | Lunge Izq | Lunge Dcho | Telemetría | Solo informe | Elementos en Diseño | entrega y revisiones | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | R00001MVE | 1 | 1985-08-23 00:00:00 | 2021-11-04 16:58:00 | 36 | F | 173 | 65 | 40 | NaN | 1 | Rodilla | Medial | Bilateral | NaN | NaN | NaN | El último tto ortopodologíco era por dolor de ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.2916 | 5 | 108.456898 | 1.4267 | 705.166667 | 0 | 95.981481 | 3.566339 | 2.310324 | 2.610172 | 6.314815 | -11.106498 | 177.510574 | 1.139044 | 127.44998 | -152.018519 | 9.059576 | 0.453526 | 0 | 13.915741 | 2.530533 | 0.030474 | 6.644113 | 24.95212 | 192.62963 | 19.203704 | 83.351852 | 602.611111 | 360.574074 | 21.62963 | 0.514759 | 2.155093 | 2.3125 | 0 | 16.300926 | 1.901933 | 65.427959 | 1.383976 | 4.583635 | 296.292913 | 484.714089 | 0.7133 | -14.72513 | 19.445907 | 62.315404 | -5.298624 | 4.002906 | -3.565694 | 5.716446 | -3.094924 | 2.38832 | 74.536365 | 49.889465 | 93.90372 | 30.344643 | 2.610172 | 2.310324 | NaN | 2.748551 | 10 | 161.715795 | 2.039509 | 346.164557 | 6.593809 | 176.417722 | 11.974009 | 10.824272 | 5.054195 | 7.822785 | -13.776322 | 477.409271 | 2.289862 | 93.300849 | 24.468354 | 0.186361 | 7.51902 | 21.803643 | 28.354237 | 5.432238 | 1.294939 | 32.53777 | 88.931286 | 55.556962 | 16.734177 | 61.088608 | 268.341772 | 271.746835 | 94.531646 | 2.070516 | 3.357595 | 3.802215 | -1.929742 | 15.512712 | 7.703537 | 82.954129 | 2.11393 | 14.237558 | 604.251908 | 563.98648 | 1.019748 | -11.32853 | 15.311133 | 64.305786 | -13.403779 | 6.502495 | -7.475044 | 6.877642 | -9.27995 | 6.648964 | 1195.82189 | 455.488825 | 354.309651 | 9.463862 | 5.054195 | 10.824272 | NaN | No | No | No | No | Negativo | Negativo | Negativo | Negativo | Bilateral | No | No | No | Bilateral | No | No | No | Bilateral | No | Bilateral | No | No | No | No | No | No | No | No | No | Bilateral | No | No | No | Bilateral | Bilateral | No | No | No | No | No | No | Bilateral | No | Bilateral | No | Bilateral | Bilateral | No | No | NaN | NaN | NaN | NaN | NaN | Negativo | Negativo | NaN | No | Bilateral | No | No | Bilateral | No | Izquierda | Bilateral | No | No | No | Bilateral | No | No | No | 0 | 0 | 0 | 0 | 0 | 0 | -1 | -1 | 0 | 0 | 0 | 0 | -1 | -1 | No | No | No | No | No | No | NaN | No | Bilateral | No | Bilateral | No | No | NaN | NaN | NaN | Si | Si | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Derecho | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 1 | R00002JVM | 2 | 1986-07-06 00:00:00 | 2021-11-04 17:41:00 | 35 | M | 181 | 78 | 44 | NaN | 0 | Sin afectacion | Sin afectacion | Ninguno | NaN | NaN | NaN | Bunion dorsal bilateral \nLunge 16º bilateral ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Si | Antihistamínicos | Si | Polen, ácaros del polvo, gato | Run, ciclismo | 45 | NaN | NaN | Nike kiger | NaN | 1.370079 | 5 | 114.767847 | 1.4312 | 649.517241 | 0 | 136.534483 | 3.119538 | 1.900867 | 2.387259 | 6.948276 | -8.176466 | 109.542317 | 1.222143 | 124.224798 | -126.896552 | 6.403624 | 48.715603 | 0 | 15.115353 | 2.673316 | 0.159367 | 8.925714 | 30.589598 | 121.245614 | 42.37931 | 78.62069 | 528.517241 | 339.724138 | 34.793103 | 0.637391 | 1.323276 | 1.306034 | -0.457 | 14 | 0.185619 | 63.307126 | 2.467419 | 3.750284 | 241.020467 | 532.549636 | 0.7156 | 0.962024 | 17.340533 | 55.030184 | -4.251966 | 2.401577 | -3.402549 | 3.958606 | -3.100207 | 4.067394 | 59.523014 | 34.808347 | 45.384226 | 23.901517 | 2.387259 | 1.900867 | NaN | 3.588932 | 13 | 172.110955 | 2.502031 | 242.541176 | 30.331614 | 283.164706 | 15.401995 | 14.331714 | 5.501979 | 10.082353 | -12.668764 | 686.949965 | 3.752896 | 69.573162 | 105.623529 | 2.512311 | 11.643407 | 23.714214 | 40.468636 | 6.976227 | 1.371845 | 40.873994 | 109.528792 | 105.376471 | 18.929412 | 37.129412 | 186.482353 | 269.882353 | 150.2 | 1.453265 | 5.445588 | 10.158088 | -2.136398 | 12.955882 | 7.324649 | 103.497258 | -3.406445 | 1.338612 | 886.819999 | 736.709414 | 1.251029 | 0.245774 | 9.668947 | 71.08696 | -19.167448 | 27.243976 | -76.367202 | 174.473553 | -6.524156 | 8.45474 | 1073.74018 | 549.242193 | 338.780492 | 7.520066 | 5.501979 | 14.331714 | NaN | Bilateral | Bilateral | Bilateral | No | Negativo | Bilateral | Bilateral | Negativo | No | Bilateral | No | No | Bilateral | No | Bilateral | No | No | No | Bilateral | No | No | No | No | Bilateral | No | No | Derecha | Derecha | No | No | Bilateral | No | No | Bilateral | No | No | No | No | No | No | Bilateral | No | No | No | No | Bilateral | No | No | NaN | NaN | NaN | NaN | NaN | Negativo | Negativo | NaN | No | Bilateral | No | No | Bilateral | No | No | No | Bilateral | No | No | Bilateral | No | No | No | 2 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 7 | 7 | No | No | No | No | No | No | NaN | Bilateral | No | No | No | Bilateral | No | NaN | NaN | NaN | Si | Si | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Bilateral | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 2 | R00004EPC | 4 | 1976-03-01 00:00:00 | 2021-11-15 13:40:00 | 45 | M | 189 | 88 | 46 | NaN | 0 | Sin afectacion | Sin afectacion | Ninguno | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.371909 | 5 | 100.149777 | 1.6437 | 775.744681 | 0 | 100.787234 | 2.368494 | 1.597828 | 1.558757 | 10.680851 | -4.411249 | 144.662411 | 1.091726 | 129.442638 | -176.595745 | 10.637696 | 7.981094 | 0 | 12.657472 | 2.785581 | 0.29757 | 9.790736 | 32.726926 | 106.680851 | 5.255319 | 37.106383 | 733.382979 | 370.574468 | 27 | 0.537651 | 1.611702 | 1.25 | -10.9844 | 3.597826 | 0.924553 | 82.060187 | 3.086117 | 8.109723 | 283.071966 | 564.581687 | 0.8218 | 0.192496 | 8.006323 | 77.799223 | -3.718124 | 4.023933 | -3.135851 | 3.355565 | -3.749373 | 2.686873 | 31.332204 | 40.367898 | 29.675547 | 19.19568 | 1.558757 | 1.597828 | NaN | 3.237176 | 12 | 161.586499 | 2.412864 | 312.8875 | 15.662497 | 295.075 | 12.238623 | 11.182911 | 4.905526 | 8.6625 | -5.597087 | 370.364379 | 2.753032 | 84.248189 | 58.0875 | 0.808101 | 7.467717 | 19.412686 | 31.394826 | 6.489825 | 1.383789 | 36.559321 | 98.867903 | 63.2125 | 20.5625 | 14.6125 | 277.7125 | 271.5125 | 120.3875 | 0.70904 | 3.246875 | 3.046094 | -2.040584 | 4.363636 | 4.281259 | 93.967785 | 3.72618 | 5.314272 | 608.752448 | 695.496367 | 1.206434 | 4.629309 | 13.068565 | 64.478919 | -4.481001 | 4.663599 | -4.560628 | 4.030698 | -8.582659 | 6.3752 | 287.748406 | 329.644999 | 238.683496 | 9.743993 | 4.905526 | 11.182911 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 3 | R00005DCM | 5 | 1978-12-23 00:00:00 | 2021-11-15 12:33:00 | 43 | M | 182 | 70 | 44 | NaN | 1 | Pie | Medial | Derecho | NaN | NaN | NaN | Año - año y medio con dolor en la cadera con d... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Saucony | NaN | 1.318286 | 5 | 103.976334 | 1.5381 | 733.48 | 0 | 101.42 | 2.667928 | 1.708754 | 1.985392 | 11.18 | -4.351264 | 123.764646 | 1.149516 | 127.091716 | -156.42 | 8.991884 | 598.235028 | 0 | 13.385676 | 2.615824 | 0.145732 | 7.967042 | 28.22087 | 148.78 | 15.72 | 31.96 | 685.8 | 358.94 | 38.8 | 0.841172 | 1.4325 | 1.74 | -22.5 | 3.038462 | -0.290622 | 91.4922 | 5.121574 | 15.046578 | 264.414068 | 466.721194 | 0.769 | 6.506884 | 7.471882 | 81.783758 | -4.479488 | 3.6198 | -3.219069 | 4.110612 | -2.138488 | 2.685047 | 30.340461 | 56.140367 | 49.883676 | 37.758259 | 1.985392 | 1.708754 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Bilateral | Bilateral | No | Bilateral | Negativo | Bilateral | Negativo | Negativo | No | Bilateral | No | No | Bilateral | No | Bilateral | No | No | No | Bilateral | Bilateral | No | No | No | No | No | No | Bilateral | No | Bilateral | No | No | No | No | Bilateral | No | No | No | No | No | No | Bilateral | No | No | No | Bilateral | No | No | Derecha | NaN | NaN | NaN | NaN | NaN | Negativo | Negativo | NaN | No | Bilateral | No | No | No | Bilateral | No | Bilateral | No | No | No | Bilateral | No | No | No | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 1 | 1 | 7 | 7 | No | No | No | No | No | No | NaN | No | Bilateral | No | Bilateral | No | No | NaN | NaN | Si | Si | NaN | NaN | NaN | Si | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Si | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Negativo | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 4 | R00006FAG | 3 | 1980-01-24 00:00:00 | 2021-11-15 16:10:00 | 41 | M | 184 | 90 | 43 | NaN | 1 | Pierna | Posterior | Bilateral | Rotura bilateral del ligamento lateral TPA | NaN | NaN | Sensación de TVP en ambos gemelos y se puso pl... | NaN | NaN | Tornillo en la espina tibia derecha 2005 | NaN | NaN | NaN | NaN | Si | Proscar | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.362836 | 5 | 99.06266 | 1.6541 | 812.64 | 0 | 124.38 | 3.610964 | 2.665554 | 2.3693 | 7.9 | -10.180634 | 271.162108 | 0.981864 | 134.149908 | -206.9 | 14.254498 | 0 | 0 | 12.07416 | 2.799688 | 0.352276 | 10.241722 | 33.841236 | 94.1 | 26.14 | 37.64 | 748.86 | 353.04 | 20.22 | 0.397274 | 1.91875 | 2.19875 | -1.9805 | -0.005 | 4.518138 | 91.66532 | -0.047806 | 12.018136 | 378.706056 | 581.435544 | 0.827 | -6.480006 | 14.944068 | 89.849386 | -4.195328 | 3.364278 | -3.856456 | 6.265153 | -3.789078 | 3.724616 | 35.989772 | 44.612887 | 47.443397 | 16.321566 | 2.3693 | 2.665554 | NaN | 2.771313 | 10 | 154.324844 | 2.156889 | 344.173333 | 11.758673 | 265.053333 | 9.712691 | 8.177761 | 5.183445 | 6.293333 | -14.81418 | 324.471029 | 2.529457 | 88.531048 | 44.28 | 0.601901 | 7.491232 | 17.637041 | 28.567287 | 5.482485 | 1.139027 | 30.812276 | 84.667871 | 21.48 | 29.693333 | 61.106667 | 253.373333 | 291.386667 | 110.96 | 2.631973 | 2.868333 | 4.126667 | -2.253852 | -0.015306 | 3.920633 | 95.010432 | -3.146471 | 2.148132 | 517.263999 | 606.617845 | 1.07844 | 0.896047 | 19.396257 | 71.162513 | -3.369122 | 2.998792 | -4.744334 | 3.508732 | -1.609183 | 1.855734 | 229.821938 | 219.938216 | 174.084158 | 10.567643 | 5.183445 | 8.177761 | NaN | No | Bilateral | No | No | Negativo | Bilateral | Derecho | Negativo | No | Bilateral | No | No | Bilateral | No | No | No | Bilateral | No | Bilateral | No | No | No | No | Bilateral | No | No | Bilateral | Bilateral | Bilateral | No | No | No | No | Bilateral | No | No | No | No | No | No | Bilateral | No | No | No | Bilateral | Bilateral | No | Derecha | NaN | NaN | NaN | NaN | NaN | Negativo | Bilateral | NaN | No | Bilateral | No | No | Bilateral | No | No | No | No | No | Bilateral | Bilateral | No | No | No | 1 | -1 | 0 | -1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 3 | 0 | Derecha | No | No | No | No | No | NaN | No | No | Bilateral | No | Bilateral | No | NaN | NaN | NaN | NaN | NaN | NaN | Si | NaN | Si | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Bilateral | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
#df.dtypes # Observamos que todas las columnas son de tipo object
df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 897 entries, 0 to 896 Columns: 329 entries, Codigo to entrega y revisiones dtypes: object(329) memory usage: 2.3+ MB
#df.isnull().sum()
missing_values = df.isna().sum()
more_than_800 = missing_values[missing_values > 800]
between_600_and_800 = missing_values[(missing_values > 600) & (missing_values <= 800)]
between_400_and_600 = missing_values[(missing_values > 400) & (missing_values <= 600)]
between_200_and_400 = missing_values[(missing_values > 200) & (missing_values <= 400)]
between_100_and_200 = missing_values[(missing_values > 100) & (missing_values <= 200)]
less_than_100 = missing_values[missing_values < 100]
print("Columnas con más de 800 valores faltantes:", more_than_800.index.tolist())
Columnas con más de 800 valores faltantes: ['Motivo de consulta', 'Enfermedades Sistemicas 2', 'Dagnóstico 2', 'Fecha IQ', 'Resultado IQ', 'Alcohol', 'Especialidad', 'Rot Ext Cadera Izquierda', 'Rot Ext Cadera Derecha', 'Rot Int Cadera Derecha', 'Rot Int Cadera Izquierda', 'Dismetría', 'POPLITEO CL Neutra', 'Valgo-Varo_I', 'Pelvis AV', 'Rot_Pelvis_Izda', 'EIAS_Down_Izda', 'Hiperlordosis cervical', 'Hipercifosis torácica', 'Hiperlordosis lumbar', 'Antepulsión torax', 'Antepulsión pelvis', 'Retropulsion Pelvis', 'Rectificación lumbar', 'Retropulsion Torax', 'Dorso plano', 'Rectificación Cervical', 'GAZE Elevada', 'GAZE Disminuida', 'Retrognatismo', 'Prognatismo', 'Inclinación izquierda cabeza', 'Escoliosis Cervical Izquierda', 'Escoliosis Cervical Derecha', 'Escoliosis Dorsal Derecha', 'Escoliosis Dorsal Izquierda', 'Escoliosis Lumbar Izquierda', 'Escoliosis Lumbar Derecha', 'Escoliosis Rotación toracica derecha', 'Escoliosis Rotación toracica izquierda', 'Rotación izquierda cabeza', 'Rotación derecha cabeza', 'Rotación derecha torax', 'Rotación izquierda torax', 'Antepulsion Cabeza', 'Inclinación derecha cabeza', 'Lateropulsión cabeza derecha', 'Lateropulsión cabeza izquierda', 'Lateropulsión torax izquierda', 'Lateropulsión pelvis derecha', 'Lateropulsión pelvis izquierda', 'EIPS_Down_Izda', 'EIPS_Down_Dcha', 'EIAS_Down_Dcha', 'Lateropulsión torax derecha', 'Descenso hombro izquierdo', 'Elevación Hombro Izquierdo', 'Elevación hombro derecho', 'Descenso hombro derecho', 'Retropulsión Cabeza', 'Impresión Diagnóstica de función', 'Pruebas complementarias', 'Escaneo 25%', 'Escaneo 50%', 'Escaneo 75%', 'Escaneo 100%', 'TPU', 'TPU Run', 'PA12 Anterocapital', 'PA12 Retro', 'Pelvis Rot Dcha', 'Videoconferencia con informe', 'Telemetría', 'Solo informe', 'entrega y revisiones']
print("Columnas entre 600-800 valores faltantes:", between_600_and_800.index.tolist())
Columnas entre 600-800 valores faltantes: ['Enf Sistemicas 1', 'Tabaco', 'Medicación', 'Fármacos', 'Alergias', 'Alergenos', 'Actividad principal', 'Marca 10K', 'km/sem', 'Calzado 1', 'Calzado 2', ' Elevation Gain', ' Medio Lateral Gs2', 'Iliaco Izquierdo AV', 'Iliaco Izquierdo RV', 'Iliaco Dcho AV', 'Iliaco Dcho RV', 'EIAS_Up_Izda', 'EIAS_Up_Dcha', 'EIPS_Up_I', 'EIPS_Up_Dcha', 'Calzado', 'Escaneo 0%', 'Elementos en taller', 'Fisioterapia y ejercicios', 'Llamar cuando lleguen plantillas', 'Elementos en Diseño']
print("Columnas entre 400-600 valores faltantes:", between_400_and_600.index.tolist())
Columnas entre 400-600 valores faltantes: ['IQ', ' Pace', 'Velocidad', ' Step Rate', ' Stride Length', ' Contact Time', ' Flight Ratio', ' Power', ' Shock', ' Impact Gs', ' Braking Gs', ' Footstrike Type', ' Pronation Excursion', ' Max Pronation Velocity', ' Peak Vertical GRF', ' Contact Ratio', ' Flight Time', ' Stride Angle', ' Leg Spring Stiffness', ' Vertical Spring Stiffness', ' Vertical GRF Rate', ' Horizontal GRF Rate', ' Swing Force Rate', ' VO<sub>2</sub>', ' Total Force Rate', ' Time (Max Swing->FS)', ' Time (FS->MPV)', ' Time (MPV->MP)', ' Time (MP->TO)', ' Time (Min Swing->Max Swing)', ' Time (TO->Min Swing)', ' Medio Lateral Gs', ' Braking Gs (Amplitude)', ' Impact Gs (Amplitude)', ' Vertical Speed', ' Yaw Excursion', ' Swing Excursion', ' Yaw Excursion (MP->TO)', ' Yaw Excursion (Swing)', ' Max Stance Velocity (FS->MP)', ' Max Stance Velocity (MP->TO)', ' Step Length', ' Pronation Excursion (MP->TO)', ' Stance Excursion (FS->MP)', ' Stance Excursion (MP->TO)', ' Min Tilt', ' Max Tilt', ' Min Obliquity', ' Max Obliquity', ' Min Rotation', ' Max Rotation', ' Max Tilt Rate', ' Max Obliquity Rate', ' Max Rotation Rate', ' Vertical Oscillation', ' Braking Gs2', ' Impact Gs2', 'Iliaco Izquierdo Normal', 'Iliaco Dcho Normal', 'Lunge Izq', 'Lunge Dcho']
print("Columnas entre 200-400 valores faltantes:", between_200_and_400.index.tolist())
Columnas entre 200-400 valores faltantes: [' Min Tilt', ' Max Tilt', ' Min Obliquity', ' Max Obliquity', ' Min Rotation', ' Max Rotation', ' Max Tilt Rate', ' Max Obliquity Rate', ' Max Rotation Rate', ' Vertical Oscillation', ' Medio Lateral Gs2']
print("Columnas entre 100-200 valores faltantes:", between_100_and_200.index.tolist())
Columnas entre 100-200 valores faltantes: ['Diagnóstico 1', ' Pace', 'Velocidad', ' Step Rate', ' Stride Length', ' Contact Time', ' Flight Ratio', ' Power', ' Shock', ' Impact Gs', ' Braking Gs', ' Footstrike Type', ' Pronation Excursion', ' Max Pronation Velocity', ' Peak Vertical GRF', ' Contact Ratio', ' Flight Time', ' Stride Angle', ' Leg Spring Stiffness', ' Vertical Spring Stiffness', ' Vertical GRF Rate', ' Horizontal GRF Rate', ' Swing Force Rate', ' VO<sub>2</sub>', ' Total Force Rate', ' Time (Max Swing->FS)', ' Time (FS->MPV)', ' Time (MPV->MP)', ' Time (MP->TO)', ' Time (Min Swing->Max Swing)', ' Time (TO->Min Swing)', ' Medio Lateral Gs', ' Braking Gs (Amplitude)', ' Impact Gs (Amplitude)', ' Vertical Speed', ' Elevation Gain', ' Yaw Excursion', ' Swing Excursion', ' Yaw Excursion (MP->TO)', ' Yaw Excursion (Swing)', ' Max Stance Velocity (FS->MP)', ' Max Stance Velocity (MP->TO)', ' Step Length', ' Pronation Excursion (MP->TO)', ' Stance Excursion (FS->MP)', ' Stance Excursion (MP->TO)', ' Braking Gs2', ' Impact Gs2']
print("Columnas con menos de 100 valores faltantes:", less_than_100.index.tolist())
Columnas con menos de 100 valores faltantes: ['Codigo', 'Sujeto', 'Fecha Nacimiento', 'Fecha de exploración', 'Edad', 'Sexo', 'Altura', 'Peso', 'Nº de calzado', 'NºPatologia', 'Articulación', 'Localizacion', 'Lado', 'Patologia', 'Sintomas narrados', 'M1 Hipermovil', 'TF Normal', 'TT Normal', 'AP Adducto', 'Thomas Psoas', 'Thomas RF', 'Thomas TFL', 'Ober', 'AP_Varo', 'AP_Neutro', 'AP_Valgo', 'RP_Varo', 'RP_Neutro', 'RP_Valgo', 'Arco normal', 'Arco Aplanado', 'Arco elevado', 'PIe cavo posterior', 'PIe cavo anterior', 'M1 DFx', 'M5 Hipermovil', 'M5 Dfx', 'Arco transverso disminuido', 'M1 PFx', 'Cavo Col medial', 'M5 PFx', 'Cavo col Lateral', 'Arco transverso aumentado', 'MTF1 Normal', 'HLF', 'HL', 'HR', 'HAV', 'Index Minus', 'Index plus-minus', 'Index Plus', 'Col lat corta', 'Col lat larga', 'Pie griego', 'Pie cuadrado', 'Pie egipcio', 'TFI', 'TFE', 'TTI', 'TTE', 'AP Normal ABD-AD', 'AP Abducto', 'Pierna Corta', 'Ober Friccion', 'Popliteo', 'PNCA AP Varo', 'PNCA AP Neutro', 'PNCA AP Valgo', 'PNCA RP Varo', 'PNCA RP Neutro', 'PNCA RP Valgo', 'T_Hintermann', 'Jack Normal', 'Jack R aumentada', 'Jack No reconstruye', 'Jack R disminuida', 'Pron max Normal', 'Pronación no disponible', '2Heel Raise', 'Heel Raise', 'FPI_1_I', 'FPI_1_D', 'FPI_2_I', 'FPI_2_D', 'FPI_3_I', 'FPI_3_D', 'FPI_4_I', 'FPI_4_D', 'FPI_5_I', 'FPI_5_D', 'FPI_6_I', 'FPI_6_D', 'FPI_Total_I', 'FPI_Total_D', 'Tibia vara proximal', 'Tibia Vara distal', 'Rotula divergente', 'Rotula descendida', 'Rotula convergente', 'Rotula ascencida', 'Genu valgo', 'Genu normal', 'Genu varo', 'Genu recurvatum', 'Genu neutro', 'Genu flexum', 'Lunge']
df.duplicated().sum()
0
# Añadir sufijos "_walk" a las columnas del grupo 4
df.columns.values[35:93] = [str(col) + '_walk' for col in df.columns[35:93]]
# Añadir sufijos "_run" a las columnas del grupo 5
df.columns.values[93:151] = [str(col) + '_run' for col in df.columns[93:151]]
df.head()
| Codigo | Sujeto | Fecha Nacimiento | Fecha de exploración | Edad | Sexo | Altura | Peso | Nº de calzado | Motivo de consulta | NºPatologia | Articulación | Localizacion | Lado | Patologia | Enf Sistemicas 1 | Enfermedades Sistemicas 2 | Sintomas narrados | Diagnóstico 1 | Dagnóstico 2 | IQ | Fecha IQ | Resultado IQ | Tabaco | Alcohol | Medicación | Fármacos | Alergias | Alergenos | Actividad principal | Marca 10K | Especialidad | km/sem | Calzado 1 | Calzado 2 | Pace_walk | Velocidad_walk | Step Rate_walk | Stride Length_walk | Contact Time_walk | Flight Ratio_walk | Power_walk | Shock_walk | Impact Gs_walk | Braking Gs_walk | Footstrike Type_walk | Pronation Excursion_walk | Max Pronation Velocity_walk | Peak Vertical GRF_walk | Contact Ratio_walk | Flight Time_walk | Stride Angle_walk | Leg Spring Stiffness_walk | Vertical Spring Stiffness_walk | Vertical GRF Rate_walk | Horizontal GRF Rate_walk | Swing Force Rate_walk | VO<sub>2</sub>_walk | Total Force Rate_walk | Time (Max Swing->FS)_walk | Time (FS->MPV)_walk | Time (MPV->MP)_walk | Time (MP->TO)_walk | Time (Min Swing->Max Swing)_walk | Time (TO->Min Swing)_walk | Medio Lateral Gs_walk | Braking Gs (Amplitude)_walk | Impact Gs (Amplitude)_walk | Vertical Speed_walk | Elevation Gain_walk | Yaw Excursion_walk | Swing Excursion_walk | Yaw Excursion (MP->TO)_walk | Yaw Excursion (Swing)_walk | Max Stance Velocity (FS->MP)_walk | Max Stance Velocity (MP->TO)_walk | Step Length_walk | Pronation Excursion (MP->TO)_walk | Stance Excursion (FS->MP)_walk | Stance Excursion (MP->TO)_walk | Min Tilt_walk | Max Tilt_walk | Min Obliquity_walk | Max Obliquity_walk | Min Rotation_walk | Max Rotation_walk | Max Tilt Rate_walk | Max Obliquity Rate_walk | Max Rotation Rate_walk | Vertical Oscillation_walk | Braking Gs2_walk | Impact Gs2_walk | Medio Lateral Gs2_walk | Pace_run | Velocidad_run | Step Rate_run | Stride Length_run | Contact Time_run | Flight Ratio_run | Power_run | Shock_run | Impact Gs_run | Braking Gs_run | Footstrike Type_run | Pronation Excursion_run | Max Pronation Velocity_run | Peak Vertical GRF_run | Contact Ratio_run | Flight Time_run | Stride Angle_run | Leg Spring Stiffness_run | Vertical Spring Stiffness_run | Vertical GRF Rate_run | Horizontal GRF Rate_run | Swing Force Rate_run | VO<sub>2</sub>_run | Total Force Rate_run | Time (Max Swing->FS)_run | Time (FS->MPV)_run | Time (MPV->MP)_run | Time (MP->TO)_run | Time (Min Swing->Max Swing)_run | Time (TO->Min Swing)_run | Medio Lateral Gs_run | Braking Gs (Amplitude)_run | Impact Gs (Amplitude)_run | Vertical Speed_run | Elevation Gain_run | Yaw Excursion_run | Swing Excursion_run | Yaw Excursion (MP->TO)_run | Yaw Excursion (Swing)_run | Max Stance Velocity (FS->MP)_run | Max Stance Velocity (MP->TO)_run | Step Length_run | Pronation Excursion (MP->TO)_run | Stance Excursion (FS->MP)_run | Stance Excursion (MP->TO)_run | Min Tilt_run | Max Tilt_run | Min Obliquity_run | Max Obliquity_run | Min Rotation_run | Max Rotation_run | Max Tilt Rate_run | Max Obliquity Rate_run | Max Rotation Rate_run | Vertical Oscillation_run | Braking Gs2_run | Impact Gs2_run | Medio Lateral Gs2_run | M1 Hipermovil | TF Normal | TT Normal | AP Adducto | Thomas Psoas | Thomas RF | Thomas TFL | Ober | AP_Varo | AP_Neutro | AP_Valgo | RP_Varo | RP_Neutro | RP_Valgo | Arco normal | Arco Aplanado | Arco elevado | PIe cavo posterior | PIe cavo anterior | M1 DFx | M5 Hipermovil | M5 Dfx | Arco transverso disminuido | M1 PFx | Cavo Col medial | M5 PFx | Cavo col Lateral | Arco transverso aumentado | MTF1 Normal | HLF | HL | HR | HAV | Index Minus | Index plus-minus | Index Plus | Col lat corta | Col lat larga | Pie griego | Pie cuadrado | Pie egipcio | TFI | TFE | TTI | TTE | AP Normal ABD-AD | AP Abducto | Pierna Corta | Rot Ext Cadera Izquierda | Rot Ext Cadera Derecha | Rot Int Cadera Derecha | Rot Int Cadera Izquierda | Dismetría | Ober Friccion | Popliteo | POPLITEO CL Neutra | PNCA AP Varo | PNCA AP Neutro | PNCA AP Valgo | PNCA RP Varo | PNCA RP Neutro | PNCA RP Valgo | T_Hintermann | Jack Normal | Jack R aumentada | Jack No reconstruye | Jack R disminuida | Pron max Normal | Pronación no disponible | 2Heel Raise | Heel Raise | FPI_1_I | FPI_1_D | FPI_2_I | FPI_2_D | FPI_3_I | FPI_3_D | FPI_4_I | FPI_4_D | FPI_5_I | FPI_5_D | FPI_6_I | FPI_6_D | FPI_Total_I | FPI_Total_D | Tibia vara proximal | Tibia Vara distal | Rotula divergente | Rotula descendida | Rotula convergente | Rotula ascencida | Valgo-Varo_I | Genu valgo | Genu normal | Genu varo | Genu recurvatum | Genu neutro | Genu flexum | Pelvis AV | Rot_Pelvis_Izda | EIAS_Down_Izda | Iliaco Izquierdo Normal | Iliaco Dcho Normal | Iliaco Izquierdo AV | Iliaco Izquierdo RV | Iliaco Dcho AV | Iliaco Dcho RV | EIAS_Up_Izda | EIAS_Up_Dcha | Hiperlordosis cervical | Hipercifosis torácica | Hiperlordosis lumbar | Antepulsión torax | Antepulsión pelvis | Retropulsion Pelvis | Rectificación lumbar | Retropulsion Torax | Dorso plano | Rectificación Cervical | GAZE Elevada | GAZE Disminuida | Retrognatismo | Prognatismo | Inclinación izquierda cabeza | Escoliosis Cervical Izquierda | Escoliosis Cervical Derecha | Escoliosis Dorsal Derecha | Escoliosis Dorsal Izquierda | Escoliosis Lumbar Izquierda | Escoliosis Lumbar Derecha | Escoliosis Rotación toracica derecha | Escoliosis Rotación toracica izquierda | Rotación izquierda cabeza | Rotación derecha cabeza | Rotación derecha torax | Rotación izquierda torax | Antepulsion Cabeza | Inclinación derecha cabeza | Lateropulsión cabeza derecha | Lateropulsión cabeza izquierda | Lateropulsión torax izquierda | Lateropulsión pelvis derecha | Lateropulsión pelvis izquierda | EIPS_Down_Izda | EIPS_Up_I | EIPS_Up_Dcha | EIPS_Down_Dcha | EIAS_Down_Dcha | Lateropulsión torax derecha | Descenso hombro izquierdo | Elevación Hombro Izquierdo | Elevación hombro derecho | Descenso hombro derecho | Retropulsión Cabeza | Lunge | Impresión Diagnóstica de función | Pruebas complementarias | Calzado | Escaneo 0% | Escaneo 25% | Escaneo 50% | Escaneo 75% | Escaneo 100% | TPU | TPU Run | PA12 Anterocapital | PA12 Retro | Elementos en taller | Fisioterapia y ejercicios | Pelvis Rot Dcha | Videoconferencia con informe | Llamar cuando lleguen plantillas | Lunge Izq | Lunge Dcho | Telemetría | Solo informe | Elementos en Diseño | entrega y revisiones | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | R00001MVE | 1 | 1985-08-23 00:00:00 | 2021-11-04 16:58:00 | 36 | F | 173 | 65 | 40 | NaN | 1 | Rodilla | Medial | Bilateral | NaN | NaN | NaN | El último tto ortopodologíco era por dolor de ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.2916 | 5 | 108.456898 | 1.4267 | 705.166667 | 0 | 95.981481 | 3.566339 | 2.310324 | 2.610172 | 6.314815 | -11.106498 | 177.510574 | 1.139044 | 127.44998 | -152.018519 | 9.059576 | 0.453526 | 0 | 13.915741 | 2.530533 | 0.030474 | 6.644113 | 24.95212 | 192.62963 | 19.203704 | 83.351852 | 602.611111 | 360.574074 | 21.62963 | 0.514759 | 2.155093 | 2.3125 | 0 | 16.300926 | 1.901933 | 65.427959 | 1.383976 | 4.583635 | 296.292913 | 484.714089 | 0.7133 | -14.72513 | 19.445907 | 62.315404 | -5.298624 | 4.002906 | -3.565694 | 5.716446 | -3.094924 | 2.38832 | 74.536365 | 49.889465 | 93.90372 | 30.344643 | 2.610172 | 2.310324 | NaN | 2.748551 | 10 | 161.715795 | 2.039509 | 346.164557 | 6.593809 | 176.417722 | 11.974009 | 10.824272 | 5.054195 | 7.822785 | -13.776322 | 477.409271 | 2.289862 | 93.300849 | 24.468354 | 0.186361 | 7.51902 | 21.803643 | 28.354237 | 5.432238 | 1.294939 | 32.53777 | 88.931286 | 55.556962 | 16.734177 | 61.088608 | 268.341772 | 271.746835 | 94.531646 | 2.070516 | 3.357595 | 3.802215 | -1.929742 | 15.512712 | 7.703537 | 82.954129 | 2.11393 | 14.237558 | 604.251908 | 563.98648 | 1.019748 | -11.32853 | 15.311133 | 64.305786 | -13.403779 | 6.502495 | -7.475044 | 6.877642 | -9.27995 | 6.648964 | 1195.82189 | 455.488825 | 354.309651 | 9.463862 | 5.054195 | 10.824272 | NaN | No | No | No | No | Negativo | Negativo | Negativo | Negativo | Bilateral | No | No | No | Bilateral | No | No | No | Bilateral | No | Bilateral | No | No | No | No | No | No | No | No | No | Bilateral | No | No | No | Bilateral | Bilateral | No | No | No | No | No | No | Bilateral | No | Bilateral | No | Bilateral | Bilateral | No | No | NaN | NaN | NaN | NaN | NaN | Negativo | Negativo | NaN | No | Bilateral | No | No | Bilateral | No | Izquierda | Bilateral | No | No | No | Bilateral | No | No | No | 0 | 0 | 0 | 0 | 0 | 0 | -1 | -1 | 0 | 0 | 0 | 0 | -1 | -1 | No | No | No | No | No | No | NaN | No | Bilateral | No | Bilateral | No | No | NaN | NaN | NaN | Si | Si | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Derecho | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 1 | R00002JVM | 2 | 1986-07-06 00:00:00 | 2021-11-04 17:41:00 | 35 | M | 181 | 78 | 44 | NaN | 0 | Sin afectacion | Sin afectacion | Ninguno | NaN | NaN | NaN | Bunion dorsal bilateral \nLunge 16º bilateral ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Si | Antihistamínicos | Si | Polen, ácaros del polvo, gato | Run, ciclismo | 45 | NaN | NaN | Nike kiger | NaN | 1.370079 | 5 | 114.767847 | 1.4312 | 649.517241 | 0 | 136.534483 | 3.119538 | 1.900867 | 2.387259 | 6.948276 | -8.176466 | 109.542317 | 1.222143 | 124.224798 | -126.896552 | 6.403624 | 48.715603 | 0 | 15.115353 | 2.673316 | 0.159367 | 8.925714 | 30.589598 | 121.245614 | 42.37931 | 78.62069 | 528.517241 | 339.724138 | 34.793103 | 0.637391 | 1.323276 | 1.306034 | -0.457 | 14 | 0.185619 | 63.307126 | 2.467419 | 3.750284 | 241.020467 | 532.549636 | 0.7156 | 0.962024 | 17.340533 | 55.030184 | -4.251966 | 2.401577 | -3.402549 | 3.958606 | -3.100207 | 4.067394 | 59.523014 | 34.808347 | 45.384226 | 23.901517 | 2.387259 | 1.900867 | NaN | 3.588932 | 13 | 172.110955 | 2.502031 | 242.541176 | 30.331614 | 283.164706 | 15.401995 | 14.331714 | 5.501979 | 10.082353 | -12.668764 | 686.949965 | 3.752896 | 69.573162 | 105.623529 | 2.512311 | 11.643407 | 23.714214 | 40.468636 | 6.976227 | 1.371845 | 40.873994 | 109.528792 | 105.376471 | 18.929412 | 37.129412 | 186.482353 | 269.882353 | 150.2 | 1.453265 | 5.445588 | 10.158088 | -2.136398 | 12.955882 | 7.324649 | 103.497258 | -3.406445 | 1.338612 | 886.819999 | 736.709414 | 1.251029 | 0.245774 | 9.668947 | 71.08696 | -19.167448 | 27.243976 | -76.367202 | 174.473553 | -6.524156 | 8.45474 | 1073.74018 | 549.242193 | 338.780492 | 7.520066 | 5.501979 | 14.331714 | NaN | Bilateral | Bilateral | Bilateral | No | Negativo | Bilateral | Bilateral | Negativo | No | Bilateral | No | No | Bilateral | No | Bilateral | No | No | No | Bilateral | No | No | No | No | Bilateral | No | No | Derecha | Derecha | No | No | Bilateral | No | No | Bilateral | No | No | No | No | No | No | Bilateral | No | No | No | No | Bilateral | No | No | NaN | NaN | NaN | NaN | NaN | Negativo | Negativo | NaN | No | Bilateral | No | No | Bilateral | No | No | No | Bilateral | No | No | Bilateral | No | No | No | 2 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 7 | 7 | No | No | No | No | No | No | NaN | Bilateral | No | No | No | Bilateral | No | NaN | NaN | NaN | Si | Si | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Bilateral | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 2 | R00004EPC | 4 | 1976-03-01 00:00:00 | 2021-11-15 13:40:00 | 45 | M | 189 | 88 | 46 | NaN | 0 | Sin afectacion | Sin afectacion | Ninguno | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.371909 | 5 | 100.149777 | 1.6437 | 775.744681 | 0 | 100.787234 | 2.368494 | 1.597828 | 1.558757 | 10.680851 | -4.411249 | 144.662411 | 1.091726 | 129.442638 | -176.595745 | 10.637696 | 7.981094 | 0 | 12.657472 | 2.785581 | 0.29757 | 9.790736 | 32.726926 | 106.680851 | 5.255319 | 37.106383 | 733.382979 | 370.574468 | 27 | 0.537651 | 1.611702 | 1.25 | -10.9844 | 3.597826 | 0.924553 | 82.060187 | 3.086117 | 8.109723 | 283.071966 | 564.581687 | 0.8218 | 0.192496 | 8.006323 | 77.799223 | -3.718124 | 4.023933 | -3.135851 | 3.355565 | -3.749373 | 2.686873 | 31.332204 | 40.367898 | 29.675547 | 19.19568 | 1.558757 | 1.597828 | NaN | 3.237176 | 12 | 161.586499 | 2.412864 | 312.8875 | 15.662497 | 295.075 | 12.238623 | 11.182911 | 4.905526 | 8.6625 | -5.597087 | 370.364379 | 2.753032 | 84.248189 | 58.0875 | 0.808101 | 7.467717 | 19.412686 | 31.394826 | 6.489825 | 1.383789 | 36.559321 | 98.867903 | 63.2125 | 20.5625 | 14.6125 | 277.7125 | 271.5125 | 120.3875 | 0.70904 | 3.246875 | 3.046094 | -2.040584 | 4.363636 | 4.281259 | 93.967785 | 3.72618 | 5.314272 | 608.752448 | 695.496367 | 1.206434 | 4.629309 | 13.068565 | 64.478919 | -4.481001 | 4.663599 | -4.560628 | 4.030698 | -8.582659 | 6.3752 | 287.748406 | 329.644999 | 238.683496 | 9.743993 | 4.905526 | 11.182911 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 3 | R00005DCM | 5 | 1978-12-23 00:00:00 | 2021-11-15 12:33:00 | 43 | M | 182 | 70 | 44 | NaN | 1 | Pie | Medial | Derecho | NaN | NaN | NaN | Año - año y medio con dolor en la cadera con d... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Saucony | NaN | 1.318286 | 5 | 103.976334 | 1.5381 | 733.48 | 0 | 101.42 | 2.667928 | 1.708754 | 1.985392 | 11.18 | -4.351264 | 123.764646 | 1.149516 | 127.091716 | -156.42 | 8.991884 | 598.235028 | 0 | 13.385676 | 2.615824 | 0.145732 | 7.967042 | 28.22087 | 148.78 | 15.72 | 31.96 | 685.8 | 358.94 | 38.8 | 0.841172 | 1.4325 | 1.74 | -22.5 | 3.038462 | -0.290622 | 91.4922 | 5.121574 | 15.046578 | 264.414068 | 466.721194 | 0.769 | 6.506884 | 7.471882 | 81.783758 | -4.479488 | 3.6198 | -3.219069 | 4.110612 | -2.138488 | 2.685047 | 30.340461 | 56.140367 | 49.883676 | 37.758259 | 1.985392 | 1.708754 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Bilateral | Bilateral | No | Bilateral | Negativo | Bilateral | Negativo | Negativo | No | Bilateral | No | No | Bilateral | No | Bilateral | No | No | No | Bilateral | Bilateral | No | No | No | No | No | No | Bilateral | No | Bilateral | No | No | No | No | Bilateral | No | No | No | No | No | No | Bilateral | No | No | No | Bilateral | No | No | Derecha | NaN | NaN | NaN | NaN | NaN | Negativo | Negativo | NaN | No | Bilateral | No | No | No | Bilateral | No | Bilateral | No | No | No | Bilateral | No | No | No | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 1 | 1 | 7 | 7 | No | No | No | No | No | No | NaN | No | Bilateral | No | Bilateral | No | No | NaN | NaN | Si | Si | NaN | NaN | NaN | Si | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Si | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Negativo | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 4 | R00006FAG | 3 | 1980-01-24 00:00:00 | 2021-11-15 16:10:00 | 41 | M | 184 | 90 | 43 | NaN | 1 | Pierna | Posterior | Bilateral | Rotura bilateral del ligamento lateral TPA | NaN | NaN | Sensación de TVP en ambos gemelos y se puso pl... | NaN | NaN | Tornillo en la espina tibia derecha 2005 | NaN | NaN | NaN | NaN | Si | Proscar | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.362836 | 5 | 99.06266 | 1.6541 | 812.64 | 0 | 124.38 | 3.610964 | 2.665554 | 2.3693 | 7.9 | -10.180634 | 271.162108 | 0.981864 | 134.149908 | -206.9 | 14.254498 | 0 | 0 | 12.07416 | 2.799688 | 0.352276 | 10.241722 | 33.841236 | 94.1 | 26.14 | 37.64 | 748.86 | 353.04 | 20.22 | 0.397274 | 1.91875 | 2.19875 | -1.9805 | -0.005 | 4.518138 | 91.66532 | -0.047806 | 12.018136 | 378.706056 | 581.435544 | 0.827 | -6.480006 | 14.944068 | 89.849386 | -4.195328 | 3.364278 | -3.856456 | 6.265153 | -3.789078 | 3.724616 | 35.989772 | 44.612887 | 47.443397 | 16.321566 | 2.3693 | 2.665554 | NaN | 2.771313 | 10 | 154.324844 | 2.156889 | 344.173333 | 11.758673 | 265.053333 | 9.712691 | 8.177761 | 5.183445 | 6.293333 | -14.81418 | 324.471029 | 2.529457 | 88.531048 | 44.28 | 0.601901 | 7.491232 | 17.637041 | 28.567287 | 5.482485 | 1.139027 | 30.812276 | 84.667871 | 21.48 | 29.693333 | 61.106667 | 253.373333 | 291.386667 | 110.96 | 2.631973 | 2.868333 | 4.126667 | -2.253852 | -0.015306 | 3.920633 | 95.010432 | -3.146471 | 2.148132 | 517.263999 | 606.617845 | 1.07844 | 0.896047 | 19.396257 | 71.162513 | -3.369122 | 2.998792 | -4.744334 | 3.508732 | -1.609183 | 1.855734 | 229.821938 | 219.938216 | 174.084158 | 10.567643 | 5.183445 | 8.177761 | NaN | No | Bilateral | No | No | Negativo | Bilateral | Derecho | Negativo | No | Bilateral | No | No | Bilateral | No | No | No | Bilateral | No | Bilateral | No | No | No | No | Bilateral | No | No | Bilateral | Bilateral | Bilateral | No | No | No | No | Bilateral | No | No | No | No | No | No | Bilateral | No | No | No | Bilateral | Bilateral | No | Derecha | NaN | NaN | NaN | NaN | NaN | Negativo | Bilateral | NaN | No | Bilateral | No | No | Bilateral | No | No | No | No | No | Bilateral | Bilateral | No | No | No | 1 | -1 | 0 | -1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 3 | 0 | Derecha | No | No | No | No | No | NaN | No | No | Bilateral | No | Bilateral | No | NaN | NaN | NaN | NaN | NaN | NaN | Si | NaN | Si | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Bilateral | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
perfil_df = df.iloc[:, 0:10].copy() # Grupo 1: Datos demográficos y de perfil
patologia_df = df.iloc[:, 10:15].copy() # Grupo 2: Patología
ib_resport_df = df.iloc[:, 15:35].copy() # Grupo 3: IB_Resport
runscribe_walk_df = df.iloc[:, 35:93].copy() # Grupo 4: Runscribe_walk
runscribe_run_df = df.iloc[:, 93:151].copy() # Grupo 5: Runscribe_run
ib_resport2_df = df.iloc[:, 151:].copy() # Grupo 6: IB_Resport 2
Calculamos la cantidad de datos faltantes por columna y contamos cuántas columnas tienen la misma cantidad de datos faltantes:
results = {
'Perfil': missing_data_analysis(perfil_df),
'Patologia': missing_data_analysis(patologia_df),
'IB_Resport': missing_data_analysis(ib_resport_df),
'Runscribe_walk': missing_data_analysis(runscribe_walk_df),
'Runscribe_run': missing_data_analysis(runscribe_run_df),
'IB_Resport2': missing_data_analysis(ib_resport2_df)
}
for group, result in results.items():
print(f"Resultados para {group}:")
print(result, "\n")
Resultados para Perfil: 0 7 9 1 17 1 897 1 Name: count, dtype: int64 Resultados para Patologia: 0 4 25 1 Name: count, dtype: int64 Resultados para IB_Resport: 658 1 894 1 635 1 768 1 825 1 770 1 687 1 723 1 735 1 644 1 666 1 849 1 793 1 888 1 873 1 562 1 895 1 189 1 39 1 695 1 Name: count, dtype: int64 Resultados para Runscribe_walk: 142 40 245 10 148 4 143 2 179 1 361 1 Name: count, dtype: int64 Resultados para Runscribe_run: 534 35 596 10 535 9 538 2 608 1 670 1 Name: count, dtype: int64 Resultados para IB_Resport2: 35 88 897 8 889 7 896 6 891 5 36 4 870 3 878 2 893 2 864 2 882 2 894 2 883 2 874 2 679 1 881 1 846 1 886 1 808 1 839 1 763 1 739 1 855 1 817 1 812 1 885 1 835 1 728 1 788 1 752 1 599 1 596 1 821 1 832 1 888 1 884 1 790 1 773 1 685 1 760 1 838 1 875 1 672 1 819 1 869 1 867 1 865 1 785 1 890 1 871 1 457 1 450 1 844 1 829 1 860 1 759 1 770 1 Name: count, dtype: int64
Subgrupo Perfil: La recopilación de datos demográficos y de perfil es sobresaliente, evidenciada por el hecho de que la gran mayoría de las columnas están completas. Sin embargo, se identifica una columna, 'Motivo de consulta', que está totalmente vacía. Este hallazgo indica que la columna es prescindible para el análisis y podría ser excluida sin pérdida de información relevante.
Subgrupo Patología: Se hace evidente la necesidad de estandarizar procedimientos de recopilación para mejorar la coherencia de la información clínica.
Subgrupo IB_Resport: La heterogeneidad en el número de datos faltantes por columna refleja un posible reto en la normalización del proceso de recogida de datos de este conjunto particular, lo que podría impactar en la interpretación de los análisis y en la toma de decisiones clínicas.
Subgrupo Runscribe_walk: La consistencia en el número de datos faltantes observada en ciertas columnas de este subgrupo plantea la hipótesis de que podría haber protocolos específicos o inconvenientes sistemáticos durante la medición que necesitan ser investigados y abordados para garantizar la calidad de los datos.
Subgrupo Runscribe_run: Un fenómeno similar al observado en el grupo anterior se presenta aquí, con múltiples columnas compartiendo una cantidad idéntica de datos faltantes. Este patrón conduce a la suposición de la existencia de factores comunes en la recolección de datos durante la actividad de correr que deben ser explorados para su optimización.
Subgrupo IB_Resport2: La notable dispersión en los datos faltantes de este subgrupo hace pensar en una variabilidad significativa en la adquisición de datos. A destacar, un conjunto significativo de columnas reporta la misma cantidad de datos faltantes, sugiriendo la existencia de un factor común en la recolección de datos que merece una investigación adicional.
perfil_df.describe()
| Codigo | Sujeto | Fecha Nacimiento | Fecha de exploración | Edad | Sexo | Altura | Peso | Nº de calzado | Motivo de consulta | |
|---|---|---|---|---|---|---|---|---|---|---|
| count | 897 | 897 | 888 | 897 | 880 | 897 | 897 | 897 | 897 | 0 |
| unique | 730 | 479 | 703 | 729 | 79 | 2 | 69 | 92 | 34 | 0 |
| top | R00027YPH | 217 | 1966-08-05 00:00:00 | 2021-12-02 17:03:00 | 42 | M | 170 | 80 | 42 | NaN |
| freq | 4 | 6 | 4 | 4 | 31 | 573 | 62 | 48 | 121 | NaN |
patologia_df.describe()
| NºPatologia | Articulación | Localizacion | Lado | Patologia | |
|---|---|---|---|---|---|
| count | 897 | 897 | 897 | 897 | 872 |
| unique | 5 | 13 | 28 | 60 | 474 |
| top | 1 | Pie | Posterior | D | Talalgia |
| freq | 698 | 266 | 152 | 154 | 37 |
ib_resport_df.describe()
| Enf Sistemicas 1 | Enfermedades Sistemicas 2 | Sintomas narrados | Diagnóstico 1 | Dagnóstico 2 | IQ | Fecha IQ | Resultado IQ | Tabaco | Alcohol | Medicación | Fármacos | Alergias | Alergenos | Actividad principal | Marca 10K | Especialidad | km/sem | Calzado 1 | Calzado 2 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| count | 239 | 3 | 858 | 708 | 2 | 335 | 24 | 9 | 104 | 48 | 231 | 253 | 162 | 174 | 210 | 127 | 72 | 129 | 262 | 202 |
| unique | 164 | 2 | 696 | 521 | 2 | 247 | 12 | 9 | 2 | 2 | 3 | 194 | 3 | 123 | 159 | 40 | 45 | 62 | 198 | 83 |
| top | 0 | Pielonefritis infecciosa 2017 controlada en Pu... | Tras IQ de PI con 13 años no vuelve a tener pr... | Rodilla derecha | Tobillo izquierdo. | 0 | 0 | sigue doliendo | Si | Si | Si | Anticonceptivas | Si | Ambientales | Triatlón | 50 | Amateur | 40-50 | Nike pegasus | 38 |
| freq | 8 | 2 | 4 | 10 | 1 | 7 | 12 | 1 | 92 | 39 | 226 | 6 | 158 | 11 | 8 | 13 | 12 | 9 | 6 | 15 |
runscribe_walk_df.describe()
| Pace_walk | Velocidad_walk | Step Rate_walk | Stride Length_walk | Contact Time_walk | Flight Ratio_walk | Power_walk | Shock_walk | Impact Gs_walk | Braking Gs_walk | Footstrike Type_walk | Pronation Excursion_walk | Max Pronation Velocity_walk | Peak Vertical GRF_walk | Contact Ratio_walk | Flight Time_walk | Stride Angle_walk | Leg Spring Stiffness_walk | Vertical Spring Stiffness_walk | Vertical GRF Rate_walk | Horizontal GRF Rate_walk | Swing Force Rate_walk | VO<sub>2</sub>_walk | Total Force Rate_walk | Time (Max Swing->FS)_walk | Time (FS->MPV)_walk | Time (MPV->MP)_walk | Time (MP->TO)_walk | Time (Min Swing->Max Swing)_walk | Time (TO->Min Swing)_walk | Medio Lateral Gs_walk | Braking Gs (Amplitude)_walk | Impact Gs (Amplitude)_walk | Vertical Speed_walk | Elevation Gain_walk | Yaw Excursion_walk | Swing Excursion_walk | Yaw Excursion (MP->TO)_walk | Yaw Excursion (Swing)_walk | Max Stance Velocity (FS->MP)_walk | Max Stance Velocity (MP->TO)_walk | Step Length_walk | Pronation Excursion (MP->TO)_walk | Stance Excursion (FS->MP)_walk | Stance Excursion (MP->TO)_walk | Min Tilt_walk | Max Tilt_walk | Min Obliquity_walk | Max Obliquity_walk | Min Rotation_walk | Max Rotation_walk | Max Tilt Rate_walk | Max Obliquity Rate_walk | Max Rotation Rate_walk | Vertical Oscillation_walk | Braking Gs2_walk | Impact Gs2_walk | Medio Lateral Gs2_walk | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| count | 755.000000 | 755 | 755.00000 | 755.0000 | 755.000000 | 755 | 755.000000 | 755.000000 | 755.000000 | 755.000000 | 755.000000 | 755.000000 | 755.000000 | 755.000000 | 755.000000 | 755.000000 | 755.000000 | 755 | 755 | 755.000000 | 749.00000 | 749.00000 | 749.000000 | 749.000000 | 755.000000 | 755.00000 | 755.000000 | 755.000000 | 755.000000 | 755.000000 | 755.000000 | 754.000000 | 754.000000 | 755 | 718.000000 | 755.000000 | 755.000000 | 755.00000 | 755.00000 | 755.000000 | 755.000000 | 755.0000 | 755.000000 | 755.000000 | 755.000000 | 652.000000 | 652.000000 | 652.000000 | 652.000000 | 652.000000 | 652.000000 | 652.000000 | 652.000000 | 652.000000 | 652.00000 | 755.000000 | 755.000000 | 536.000000 |
| unique | 600.000000 | 6 | 600.00000 | 579.0000 | 599.000000 | 15 | 596.000000 | 600.000000 | 600.000000 | 600.000000 | 575.000000 | 600.000000 | 600.000000 | 600.000000 | 600.000000 | 592.000000 | 600.000000 | 447 | 32 | 600.000000 | 595.00000 | 595.00000 | 595.000000 | 595.000000 | 599.000000 | 599.00000 | 599.000000 | 599.000000 | 592.000000 | 589.000000 | 600.000000 | 585.000000 | 584.000000 | 268 | 571.000000 | 600.000000 | 600.000000 | 600.00000 | 600.00000 | 600.000000 | 600.000000 | 563.0000 | 600.000000 | 600.000000 | 600.000000 | 517.000000 | 517.000000 | 517.000000 | 517.000000 | 517.000000 | 517.000000 | 517.000000 | 517.000000 | 517.000000 | 517.00000 | 600.000000 | 600.000000 | 418.000000 |
| top | 1.215793 | 5 | 115.80159 | 1.4895 | 667.677966 | 0 | 131.611111 | 5.316822 | 3.911285 | 3.549592 | 9.666667 | -8.276234 | 168.049441 | 1.104522 | 128.850058 | -149.181818 | 9.919939 | 0 | 0 | 14.695046 | 2.83972 | 0.12123 | 8.495488 | 29.526575 | 81.210526 | 10.59322 | 70.237288 | 586.847458 | 326.836364 | 40.109091 | 0.336529 | 1.242188 | 1.583333 | 0 | 68.416667 | 1.846944 | 75.944398 | 2.21691 | 3.64302 | 314.350714 | 556.937527 | 0.7269 | -9.895929 | 14.732268 | 71.659446 | -3.213084 | 3.462515 | -7.632116 | 5.812222 | -2.200865 | 3.633538 | 97.660682 | 75.371755 | 40.315384 | 26.53964 | 3.549592 | 3.911285 | 0.331827 |
| freq | 4.000000 | 727 | 4.00000 | 6.0000 | 4.000000 | 738 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 216 | 718 | 4.000000 | 4.00000 | 4.00000 | 4.000000 | 4.000000 | 4.000000 | 4.00000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 6.000000 | 5.000000 | 307 | 4.000000 | 4.000000 | 4.000000 | 4.00000 | 4.00000 | 4.000000 | 4.000000 | 5.0000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.00000 | 4.000000 | 4.000000 | 4.000000 |
runscribe_run_df.describe()
| Pace_run | Velocidad_run | Step Rate_run | Stride Length_run | Contact Time_run | Flight Ratio_run | Power_run | Shock_run | Impact Gs_run | Braking Gs_run | Footstrike Type_run | Pronation Excursion_run | Max Pronation Velocity_run | Peak Vertical GRF_run | Contact Ratio_run | Flight Time_run | Stride Angle_run | Leg Spring Stiffness_run | Vertical Spring Stiffness_run | Vertical GRF Rate_run | Horizontal GRF Rate_run | Swing Force Rate_run | VO<sub>2</sub>_run | Total Force Rate_run | Time (Max Swing->FS)_run | Time (FS->MPV)_run | Time (MPV->MP)_run | Time (MP->TO)_run | Time (Min Swing->Max Swing)_run | Time (TO->Min Swing)_run | Medio Lateral Gs_run | Braking Gs (Amplitude)_run | Impact Gs (Amplitude)_run | Vertical Speed_run | Elevation Gain_run | Yaw Excursion_run | Swing Excursion_run | Yaw Excursion (MP->TO)_run | Yaw Excursion (Swing)_run | Max Stance Velocity (FS->MP)_run | Max Stance Velocity (MP->TO)_run | Step Length_run | Pronation Excursion (MP->TO)_run | Stance Excursion (FS->MP)_run | Stance Excursion (MP->TO)_run | Min Tilt_run | Max Tilt_run | Min Obliquity_run | Max Obliquity_run | Min Rotation_run | Max Rotation_run | Max Tilt Rate_run | Max Obliquity Rate_run | Max Rotation Rate_run | Vertical Oscillation_run | Braking Gs2_run | Impact Gs2_run | Medio Lateral Gs2_run | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| count | 363.000000 | 363 | 363.000000 | 362.000000 | 363.000000 | 363.00000 | 363.000000 | 363.000000 | 363.000000 | 363.000000 | 363 | 363.000000 | 363.000000 | 363.000000 | 363.000000 | 363.000000 | 362.000000 | 362.000000 | 362.000000 | 363.000000 | 362.000000 | 362.000000 | 362.000000 | 362.000000 | 363.000000 | 363.000000 | 363.000000 | 363.000000 | 363.000000 | 363.000000 | 363.000000 | 363.00000 | 363.000000 | 363.000000 | 289.000000 | 363.000000 | 363.000000 | 363.000000 | 363.000000 | 359.00000 | 359.000000 | 362.00000 | 363.00000 | 363.000000 | 363.000000 | 301.000000 | 301.000000 | 301.000000 | 301.000000 | 301.000000 | 301.000000 | 301.000000 | 301.000000 | 301.00000 | 301.000000 | 363.000000 | 363.000000 | 227.00000 |
| unique | 301.000000 | 12 | 302.000000 | 301.000000 | 302.000000 | 300.00000 | 299.000000 | 302.000000 | 302.000000 | 302.000000 | 297 | 302.000000 | 302.000000 | 302.000000 | 302.000000 | 302.000000 | 301.000000 | 301.000000 | 301.000000 | 302.000000 | 301.000000 | 301.000000 | 301.000000 | 301.000000 | 300.000000 | 300.000000 | 302.000000 | 302.000000 | 302.000000 | 302.000000 | 302.000000 | 302.00000 | 302.000000 | 302.000000 | 246.000000 | 302.000000 | 302.000000 | 302.000000 | 302.000000 | 298.00000 | 298.000000 | 301.00000 | 302.00000 | 302.000000 | 302.000000 | 248.000000 | 248.000000 | 248.000000 | 248.000000 | 248.000000 | 248.000000 | 248.000000 | 248.000000 | 248.00000 | 248.000000 | 302.000000 | 302.000000 | 184.00000 |
| top | 2.452213 | 10 | 179.609895 | 2.205985 | 281.890244 | 15.50348 | 144.764706 | 9.865884 | 7.105654 | 6.774828 | 16 | -16.660265 | 734.121932 | 2.740939 | 84.383898 | 51.743902 | 0.685637 | 9.013265 | 23.887005 | 34.803549 | 6.494644 | 1.622743 | 40.847963 | 109.464473 | 125.768293 | 23.941176 | 49.914634 | 215.804878 | 248.378049 | 111.963415 | 0.287637 | 7.39939 | 8.504573 | -2.045785 | -62.704225 | 5.513733 | 88.172466 | 9.604051 | 17.898263 | 603.78274 | 607.748589 | 1.10299 | -2.07509 | 13.877677 | 60.034118 | -23.034934 | 17.991371 | -7.639719 | 6.530156 | -7.351302 | 11.499093 | 1092.937872 | 513.520359 | 801.33344 | 7.813344 | 6.774828 | 7.105654 | 3.22418 |
| freq | 4.000000 | 127 | 4.000000 | 4.000000 | 4.000000 | 4.00000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 7 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.00000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.00000 | 4.000000 | 4.00000 | 4.00000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.000000 | 4.00000 | 4.000000 | 4.000000 | 4.000000 | 4.00000 |
ib_resport2_df.describe()
| M1 Hipermovil | TF Normal | TT Normal | AP Adducto | Thomas Psoas | Thomas RF | Thomas TFL | Ober | AP_Varo | AP_Neutro | AP_Valgo | RP_Varo | RP_Neutro | RP_Valgo | Arco normal | Arco Aplanado | Arco elevado | PIe cavo posterior | PIe cavo anterior | M1 DFx | M5 Hipermovil | M5 Dfx | Arco transverso disminuido | M1 PFx | Cavo Col medial | M5 PFx | Cavo col Lateral | Arco transverso aumentado | MTF1 Normal | HLF | HL | HR | HAV | Index Minus | Index plus-minus | Index Plus | Col lat corta | Col lat larga | Pie griego | Pie cuadrado | Pie egipcio | TFI | TFE | TTI | TTE | AP Normal ABD-AD | AP Abducto | Pierna Corta | Rot Ext Cadera Izquierda | Rot Ext Cadera Derecha | Rot Int Cadera Derecha | Rot Int Cadera Izquierda | Dismetría | Ober Friccion | Popliteo | POPLITEO CL Neutra | PNCA AP Varo | PNCA AP Neutro | PNCA AP Valgo | PNCA RP Varo | PNCA RP Neutro | PNCA RP Valgo | T_Hintermann | Jack Normal | Jack R aumentada | Jack No reconstruye | Jack R disminuida | Pron max Normal | Pronación no disponible | 2Heel Raise | Heel Raise | FPI_1_I | FPI_1_D | FPI_2_I | FPI_2_D | FPI_3_I | FPI_3_D | FPI_4_I | FPI_4_D | FPI_5_I | FPI_5_D | FPI_6_I | FPI_6_D | FPI_Total_I | FPI_Total_D | Tibia vara proximal | Tibia Vara distal | Rotula divergente | Rotula descendida | Rotula convergente | Rotula ascencida | Valgo-Varo_I | Genu valgo | Genu normal | Genu varo | Genu recurvatum | Genu neutro | Genu flexum | Pelvis AV | Rot_Pelvis_Izda | EIAS_Down_Izda | Iliaco Izquierdo Normal | Iliaco Dcho Normal | Iliaco Izquierdo AV | Iliaco Izquierdo RV | Iliaco Dcho AV | Iliaco Dcho RV | EIAS_Up_Izda | EIAS_Up_Dcha | Hiperlordosis cervical | Hipercifosis torácica | Hiperlordosis lumbar | Antepulsión torax | Antepulsión pelvis | Retropulsion Pelvis | Rectificación lumbar | Retropulsion Torax | Dorso plano | Rectificación Cervical | GAZE Elevada | GAZE Disminuida | Retrognatismo | Prognatismo | Inclinación izquierda cabeza | Escoliosis Cervical Izquierda | Escoliosis Cervical Derecha | Escoliosis Dorsal Derecha | Escoliosis Dorsal Izquierda | Escoliosis Lumbar Izquierda | Escoliosis Lumbar Derecha | Escoliosis Rotación toracica derecha | Escoliosis Rotación toracica izquierda | Rotación izquierda cabeza | Rotación derecha cabeza | Rotación derecha torax | Rotación izquierda torax | Antepulsion Cabeza | Inclinación derecha cabeza | Lateropulsión cabeza derecha | Lateropulsión cabeza izquierda | Lateropulsión torax izquierda | Lateropulsión pelvis derecha | Lateropulsión pelvis izquierda | EIPS_Down_Izda | EIPS_Up_I | EIPS_Up_Dcha | EIPS_Down_Dcha | EIAS_Down_Dcha | Lateropulsión torax derecha | Descenso hombro izquierdo | Elevación Hombro Izquierdo | Elevación hombro derecho | Descenso hombro derecho | Retropulsión Cabeza | Lunge | Impresión Diagnóstica de función | Pruebas complementarias | Calzado | Escaneo 0% | Escaneo 25% | Escaneo 50% | Escaneo 75% | Escaneo 100% | TPU | TPU Run | PA12 Anterocapital | PA12 Retro | Elementos en taller | Fisioterapia y ejercicios | Pelvis Rot Dcha | Videoconferencia con informe | Llamar cuando lleguen plantillas | Lunge Izq | Lunge Dcho | Telemetría | Solo informe | Elementos en Diseño | entrega y revisiones | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| count | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 14 | 8 | 8 | 8 | 51 | 862 | 862 | 1 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 861 | 862 | 862 | 862 | 861 | 862 | 862 | 862 | 861 | 862 | 862 | 861 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 13 | 862 | 862 | 862 | 862 | 862 | 862 | 8 | 68 | 53 | 447 | 440 | 124 | 225 | 137 | 218 | 107 | 212 | 14 | 19 | 59 | 8 | 22 | 6 | 78 | 28 | 30 | 6 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 32 | 7 | 8 | 26 | 23 | 19 | 3 | 0 | 15 | 8 | 27 | 0 | 0 | 1 | 37 | 0 | 3 | 6 | 138 | 112 | 33 | 12 | 9 | 6 | 4 | 11 | 27 | 4 | 862 | 89 | 58 | 134 | 158 | 42 | 15 | 1 | 6 | 80 | 16 | 85 | 62 | 169 | 109 | 33 | 23 | 145 | 298 | 301 | 76 | 65 | 127 | 27 |
| unique | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 3 | 4 | 4 | 4 | 4 | 4 | 2 | 4 | 4 | 4 | 2 | 4 | 4 | 4 | 2 | 4 | 4 | 1 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 3 | 2 | 2 | 2 | 2 | 3 | 2 | 4 | 4 | 4 | 4 | 4 | 3 | 4 | 6 | 6 | 7 | 6 | 21 | 4 | 4 | 1 | 4 | 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 4 | 5 | 5 | 22 | 23 | 4 | 4 | 4 | 1 | 4 | 2 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 4 | 63 | 28 | 103 | 2 | 2 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 129 | 84 | 2 | 2 | 2 | 34 | 36 | 2 | 2 | 82 | 6 |
| top | No | Bilateral | Bilateral | No | Negativo | Negativo | Negativo | Negativo | No | Bilateral | No | No | Bilateral | No | Bilateral | No | No | No | Bilateral | No | No | No | No | No | No | No | No | No | Bilateral | No | No | No | No | Bilateral | No | No | No | No | No | No | Bilateral | No | No | No | No | Bilateral | No | No | 45 | 50 | 20 | 20 | 0 | Negativo | Negativo | 45 | No | Bilateral | No | No | Bilateral | No | No | Bilateral | No | No | No | Bilateral | No | No | No | 2 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 6 | 5 | No | No | No | No | No | No | 0 | No | Bilateral | No | No | Bilateral | No | Si | Si | Si | Si | Si | Si | Si | Si | Si | Si | Si | Si | Si | Si | Si | Si | Si | Si | Si | Si | Si | NaN | Si | NaN | NaN | Si | Si | NaN | Si | Si | Si | Si | Si | Si | Si | NaN | Si | Si | Si | NaN | NaN | Si | Si | NaN | Si | Si | Si | Si | Si | Si | Si | Si | Si | Si | Si | Si | Negativo | 0 | 0 | 0 | Si | Si | Si | Si | Si | Si | 0 | Si | Si | 0 | 0 | Si | 0 | Si | 40 | 40 | Si | Si | 0 | 0 |
| freq | 655 | 422 | 633 | 645 | 716 | 598 | 604 | 838 | 685 | 666 | 815 | 641 | 638 | 847 | 433 | 665 | 643 | 859 | 442 | 703 | 839 | 847 | 843 | 562 | 862 | 840 | 760 | 767 | 595 | 811 | 641 | 834 | 677 | 823 | 832 | 853 | 861 | 861 | 737 | 747 | 639 | 692 | 560 | 847 | 643 | 615 | 826 | 508 | 9 | 2 | 2 | 2 | 11 | 851 | 624 | 1 | 826 | 831 | 861 | 829 | 656 | 680 | 812 | 512 | 547 | 726 | 707 | 816 | 815 | 840 | 852 | 275 | 279 | 350 | 347 | 360 | 375 | 364 | 337 | 368 | 363 | 421 | 416 | 85 | 84 | 638 | 689 | 810 | 862 | 775 | 858 | 12 | 577 | 449 | 688 | 676 | 514 | 668 | 8 | 68 | 53 | 447 | 440 | 124 | 225 | 137 | 218 | 107 | 212 | 14 | 19 | 59 | 8 | 22 | 6 | 78 | 28 | 30 | 6 | NaN | 1 | NaN | NaN | 1 | 1 | NaN | 32 | 7 | 8 | 26 | 23 | 19 | 3 | NaN | 15 | 8 | 27 | NaN | NaN | 1 | 37 | NaN | 3 | 6 | 138 | 112 | 33 | 12 | 9 | 6 | 4 | 11 | 27 | 4 | 552 | 13 | 12 | 12 | 145 | 29 | 15 | 1 | 6 | 67 | 13 | 72 | 49 | 12 | 13 | 21 | 13 | 132 | 33 | 33 | 64 | 53 | 13 | 13 |
Grupo 1 - Perfil / Demográficos¶perfil_df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 897 entries, 0 to 896 Data columns (total 10 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Codigo 897 non-null object 1 Sujeto 897 non-null object 2 Fecha Nacimiento 888 non-null object 3 Fecha de exploración 897 non-null object 4 Edad 880 non-null object 5 Sexo 897 non-null object 6 Altura 897 non-null object 7 Peso 897 non-null object 8 Nº de calzado 897 non-null object 9 Motivo de consulta 0 non-null object dtypes: object(10) memory usage: 70.2+ KB
perfil_df.isna().sum()
0 Codigo 0 Sujeto 0 Fecha Nacimiento 9 Fecha de exploración 0 Edad 17 Sexo 0 Altura 0 Peso 0 Nº de calzado 0 Motivo de consulta 897 dtype: int64
missing_percentage = calculate_missing_percentage(perfil_df, perfil_df.columns, visualize=True, figsize=(12,6))
Porcentaje de datos faltantes por columna: Motivo de consulta: 100.00% Edad: 1.90% Fecha Nacimiento: 1.00%
perfil_df.head()
| Codigo | Sujeto | Fecha Nacimiento | Fecha de exploración | Edad | Sexo | Altura | Peso | Nº de calzado | Motivo de consulta | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | R00001MVE | 1 | 1985-08-23 00:00:00 | 2021-11-04 16:58:00 | 36 | F | 173 | 65 | 40 | NaN |
| 1 | R00002JVM | 2 | 1986-07-06 00:00:00 | 2021-11-04 17:41:00 | 35 | M | 181 | 78 | 44 | NaN |
| 2 | R00004EPC | 4 | 1976-03-01 00:00:00 | 2021-11-15 13:40:00 | 45 | M | 189 | 88 | 46 | NaN |
| 3 | R00005DCM | 5 | 1978-12-23 00:00:00 | 2021-11-15 12:33:00 | 43 | M | 182 | 70 | 44 | NaN |
| 4 | R00006FAG | 3 | 1980-01-24 00:00:00 | 2021-11-15 16:10:00 | 41 | M | 184 | 90 | 43 | NaN |
# Convertir las columnas de fecha
df['Fecha Nacimiento'] = pd.to_datetime(df['Fecha Nacimiento'], errors='coerce')
df['Fecha de exploración'] = pd.to_datetime(df['Fecha de exploración'], errors='coerce')
# Convertir las columnas numéricas
df['Sujeto'] = pd.to_numeric(df['Sujeto'], errors='coerce').astype('Int64')
df['Edad'] = pd.to_numeric(df['Edad'], errors='coerce').astype('Int64')
df['Altura'] = pd.to_numeric(df['Altura'], errors='coerce')
df['Peso'] = pd.to_numeric(df['Peso'], errors='coerce')
df['Nº de calzado'] = pd.to_numeric(df['Nº de calzado'], errors='coerce')
print(df[perfil_df.columns].dtypes) # Verificar los cambios
0 Codigo object Sujeto Int64 Fecha Nacimiento datetime64[ns] Fecha de exploración datetime64[ns] Edad Int64 Sexo object Altura float64 Peso float64 Nº de calzado float64 Motivo de consulta object dtype: object
plot_boxplot(df[['Edad','Altura','Peso','Nº de calzado']])
df, outliers_peso = calculate_zscore(df, 'Peso')
print(outliers_peso[['Edad', 'Sexo', 'Altura', 'Peso', 'Nº de calzado']])
0 Edad Sexo Altura Peso Nº de calzado 90 38 M 190.0 118.0 48.9 364 55 M 185.0 135.0 49.0 466 3 M 110.0 17.0 28.0 475 4 M 110.0 18.0 29.0 524 6 M 110.0 21.0 31.0 536 5 M 104.0 15.0 27.0 554 5 F 105.0 17.0 25.0 590 5 M 112.0 16.0 30.0 592 5 F 110.0 15.0 29.0 785 7 M 120.0 20.0 31.0 800 29 M 188.0 120.0 44.5 816 43 M 180.0 135.0 43.0 896 4 M 115.0 18.0 29.0
df, outliers_peso = calculate_zscore(df, 'Altura')
print(outliers_peso[['Edad', 'Sexo', 'Altura', 'Peso', 'Nº de calzado']])
0 Edad Sexo Altura Peso Nº de calzado 447 9 F 128.0 25.0 34.0 451 7 F 131.0 25.0 31.0 466 3 M 110.0 17.0 28.0 474 6 M 121.0 25.0 31.0 475 4 M 110.0 18.0 29.0 524 6 M 110.0 21.0 31.0 536 5 M 104.0 15.0 27.0 554 5 F 105.0 17.0 25.0 568 6 M 125.0 22.0 31.0 574 9 M 132.0 32.0 34.0 590 5 M 112.0 16.0 30.0 592 5 F 110.0 15.0 29.0 785 7 M 120.0 20.0 31.0 805 8 M 125.0 27.0 34.0 824 8 F 130.0 23.0 33.0 838 8 M 125.0 26.0 33.0 848 9 M 131.0 30.0 33.0 885 7 M 128.0 25.0 33.0 896 4 M 115.0 18.0 29.0
La gráfica de caja (boxplot) muestra la distribución de las características Edad, Altura, Peso y Número de calzado en el dataset y se observa lo siguiente:
En general, las distribuciones de Altura y Peso muestran una mayor cantidad de valores atípicos, lo que sugiere variabilidad significativa en estas características dentro de la población del estudio.
print(f"Total registros: {len(perfil_df)}")
print(f"Códigos únicos: {df['Codigo'].nunique()}")
print(f"Nº Sujetos únicos: {df['Sujeto'].nunique()}")
Total registros: 897 Códigos únicos: 730 Nº Sujetos únicos: 479
# Contar cuántas veces aparece cada código en el dataset
codigo_counts = df['Codigo'].value_counts()
# Crear un DataFrame a partir del conteo de frecuencias
frec_df = pd.DataFrame(codigo_counts).reset_index()
frec_df.columns = ['Codigo', 'Frecuencia']
# Contar cuántos códigos aparecen 1, 2, 3, o más de 3 veces
print(f"Códigos que aparecen 1 vez: {frec_df[frec_df['Frecuencia'] == 1].shape[0]}")
print(f"Códigos que aparecen 2 veces: {frec_df[frec_df['Frecuencia'] == 2].shape[0]}")
print(f"Códigos que aparecen 3 veces: {frec_df[frec_df['Frecuencia'] == 3].shape[0]}")
print(f"Códigos que aparecen más de 3 veces: {frec_df[frec_df['Frecuencia'] > 3].shape[0]}")
Códigos que aparecen 1 vez: 604 Códigos que aparecen 2 veces: 91 Códigos que aparecen 3 veces: 29 Códigos que aparecen más de 3 veces: 6
# Filtrar los códigos que aparecen más de una vez
codigo_repetido = df['Codigo'].value_counts()
codigo_repetido = codigo_repetido[codigo_repetido > 1].index
# Extraer registros con códigos repetidos
registros_repetidos = df[df['Codigo'].isin(codigo_repetido)]
registros_ordenados = registros_repetidos.sort_values(by=['Codigo', 'Fecha de exploración'])
print(registros_ordenados[['Codigo','Fecha de exploración','Articulación']].head(10))
0 Codigo Fecha de exploración Articulación 431 00048JMRC 2020-09-09 12:37:00 Lumbar 432 00048JMRC 2020-09-09 12:37:00 Pierna 433 00048JMRC 2020-09-09 12:37:00 Pie 443 00058MPR 2020-10-02 17:43:00 Pie 444 00058MPR 2020-10-02 17:43:00 Pierna 539 00154DBC 2021-05-26 00:00:00 Pierna 540 00154DBC 2021-05-26 00:00:00 Pie 545 00159MLS 2021-06-02 20:36:00 Tobillo 546 00159MLS 2021-06-02 20:36:00 Pierna 548 00161LGS 2021-06-09 13:11:00 Pie
El análisis de los datos muestra que algunos códigos están asociados con múltiples registros. Esto indica que un mismo código puede representar varias visitas o exploraciones del mismo sujeto en la misma fecha pero relacionadas con diferentes articulaciones. La repetición de códigos en el mismo momento temporal sugiere que cada entrada podría representar un aspecto diferente de una visita médica más amplia, donde se evalúan múltiples áreas del cuerpo del paciente. Esto es común en registros médicos donde un paciente puede presentar quejas sobre diferentes partes del cuerpo durante la misma visita.
Revisamos valores faltantes en 'Edad' y mostramos los valores de 'Fecha Nacimiento' para los registros con 'Edad' faltantes:
missing_ages = df[df['Edad'].isnull()]
missing_ages_info = missing_ages[['Fecha Nacimiento', 'Edad']]
print(missing_ages_info)
0 Fecha Nacimiento Edad 15 2021-09-17 <NA> 72 NaT <NA> 73 NaT <NA> 74 NaT <NA> 75 NaT <NA> 274 NaT <NA> 304 2022-03-22 <NA> 420 2020-05-30 <NA> 460 2020-11-15 <NA> 510 NaT <NA> 511 NaT <NA> 533 2021-04-17 <NA> 541 NaT <NA> 582 2021-04-05 <NA> 784 2022-12-28 <NA> 810 NaT <NA> 831 2023-09-10 <NA>
Tras analizar la columna 'Fecha de Nacimiento' en relación con los datos faltantes en 'Edad', se decide no utilizar 'Fecha de Nacimiento' para el análisis adicional. La razón principal es que la columna 'Fecha de Nacimiento' contiene varios errores y valores faltantes (NaT), lo que reduce su fiabilidad y precisión como fuente para imputar o verificar las edades faltantes. Además, algunos registros tienen fechas que sugieren un error en la captura de datos, mostrando años recientes que podrían confundirse con fechas de exploración en lugar de nacimiento. Por lo tanto, su valor añadido es limitado y podría llevar a conclusiones incorrectas si se usa para calcular la 'Edad'.
corr_matrix = df.select_dtypes(include=[np.number]).corr()
# Filtrar por alta correlación con 'Edad'
high_corr = corr_matrix.loc[corr_matrix['Edad'].abs() > 0.5]
high_corr_with_age = high_corr['Edad']
# Crear un DataFrame solo con las columnas altamente correlacionadas
cols_high_corr = high_corr_with_age.index.tolist()
corr_high = df[cols_high_corr].corr()
plot_heatmap(corr_matrix=corr_matrix, figsize=(8, 6), cmap='GnBu', title='')
#plot_heatmap(corr_matrix=corr_high, figsize=(8, 6), cmap='GnBu', title='Mapa de Calor de Correlaciones Altas con Edad')
Actualmente, no se han encontrado variables altamente correlacionadas con la 'Edad' en el análisis, lo que limita la aplicación de imputaciones basadas en modelos predictivos. Posiblemente optaremos por la imputación por la media para manejar los valores faltantes en 'Edad', con el objetivo de mantener la integridad del conjunto de datos sin eliminar registros.
Continuaremos evaluando la posibilidad de imputar utilizando variables relacionadas conforme avancemos en el análisis de los subgrupos. Esta estrategia se ajustará según sea necesario para mejorar la calidad y precisión del análisis.
df[['Edad','Altura','Peso','Nº de calzado']].describe()
| Edad | Altura | Peso | Nº de calzado | |
|---|---|---|---|---|
| count | 880.0 | 897.000000 | 897.000000 | 897.000000 |
| mean | 38.164773 | 170.663545 | 69.091416 | 41.178149 |
| std | 15.993994 | 12.514888 | 15.884787 | 3.123148 |
| min | 3.0 | 104.000000 | 15.000000 | 25.000000 |
| 25% | 27.0 | 165.000000 | 59.000000 | 39.000000 |
| 50% | 38.0 | 172.000000 | 70.000000 | 42.000000 |
| 75% | 48.0 | 178.000000 | 79.000000 | 43.000000 |
| max | 85.0 | 197.000000 | 135.000000 | 49.000000 |
plot_histogram(df[perfil_df.columns], 'Edad', bins=20, title="Distribución de la Edad", xlabel="Edad", ylabel="Frecuencia")
plot_data_histogram(df[['Altura','Peso']], 20, (24, 6), 'lightsteelblue')
plot_grid_boxplots(df, ['Edad','Altura', 'Peso'], 3, (5, 6))
plot_count(df[perfil_df.columns], 'Sexo', title="Distribución de Género", xlabel="Género", ylabel="", figsize=(4, 4), palette="tab20")
anova_result = perform_anova(df, 'Peso', 'Sexo')
print(anova_result)
sum_sq df F PR(>F) C(Sexo) 39828.606816 1.0 191.385098 1.376473e-39 Residual 186255.897086 895.0 NaN NaN
anova_result = perform_anova(df, 'Altura', 'Sexo')
print(anova_result)
sum_sq df F PR(>F) C(Sexo) 29879.309475 1.0 242.108823 1.696022e-48 Residual 110454.388451 895.0 NaN NaN
# T-test para comparar 'peso' entre hombres y mujeres
t_stat, p_value = perform_ttest(df, 'Peso', 'Sexo')
print(f'T-statistic: {t_stat}, P-value: {p_value}')
T-statistic: -13.834200298985959, P-value: 1.3764725542053524e-39
# T-test para comparar 'altura' entre hombres y mujeres
t_stat, p_value = perform_ttest(df, 'Altura', 'Sexo')
print(f'T-statistic: {t_stat}, P-value: {p_value}')
T-statistic: -15.55984649583114, P-value: 1.6960215444426716e-48
plot_scatter_with_hue(df, 'Edad', 'Peso', 'Sexo', "Relación entre Edad y Peso", "Edad", "Peso (kg)")
plot_scatter_with_hue(df, 'Altura', 'Peso', 'Sexo', "Relación entre Altura y Peso", "Altura (cm)", "Peso (kg)")
menores_20 = df[df['Edad'] < 20]
print(menores_20[['Edad', 'Altura', 'Peso']].describe()) # Estadísticas Descriptivas para Menores de 20 Años
0 Edad Altura Peso count 126.0 126.000000 126.000000 mean 13.738095 157.953968 49.507937 std 4.529333 20.771552 17.188715 min 3.0 104.000000 15.000000 25% 11.0 146.000000 40.000000 50% 15.0 162.000000 52.000000 75% 17.0 172.000000 58.000000 max 19.0 195.000000 105.000000
peso_menos_20 = df[df['Peso'] < 20]
print(peso_menos_20[['Edad', 'Altura', 'Peso']]) # Revisar registros con peso menor de 20kg
0 Edad Altura Peso 466 3 110.0 17.0 475 4 110.0 18.0 536 5 104.0 15.0 554 5 105.0 17.0 590 5 112.0 16.0 592 5 110.0 15.0 896 4 115.0 18.0
plot_scatter_with_hue(df[df['Edad'] < 18], 'Altura', 'Peso', 'Sexo', "Relación entre Altura y Peso Menores de 18 años", "Altura (cm)", "Peso (kg)")
plot_scatter_with_hue(df[df['Peso'] < 20], 'Altura', 'Peso', 'Sexo', "Relación entre Altura y Peso < 20kg", "Altura (cm)", "Peso (kg)")
columns_of_interest = ['Edad', 'Sexo', 'Altura', 'Peso', 'Nº de calzado']
rows_with_missing_values = df[df[columns_of_interest].isnull().any(axis=1)][columns_of_interest]
rows_with_missing_values
| Edad | Sexo | Altura | Peso | Nº de calzado | |
|---|---|---|---|---|---|
| 15 | <NA> | M | 173.0 | 80.0 | 42.0 |
| 72 | <NA> | M | 172.0 | 76.0 | 42.0 |
| 73 | <NA> | M | 172.0 | 76.0 | 42.0 |
| 74 | <NA> | M | 172.0 | 76.0 | 42.0 |
| 75 | <NA> | M | 172.0 | 76.0 | 42.0 |
| 274 | <NA> | F | 161.0 | 50.0 | 37.0 |
| 304 | <NA> | F | 168.0 | 80.0 | 39.0 |
| 420 | <NA> | M | 174.0 | 70.0 | 42.0 |
| 460 | <NA> | M | 172.0 | 85.0 | 42.0 |
| 510 | <NA> | F | 175.0 | 58.0 | 40.0 |
| 511 | <NA> | M | 178.0 | 66.0 | 43.0 |
| 533 | <NA> | F | 165.0 | 57.0 | 38.0 |
| 541 | <NA> | F | 167.0 | 58.0 | 39.0 |
| 582 | <NA> | F | 153.0 | 48.0 | 38.0 |
| 784 | <NA> | M | 166.0 | 54.0 | 37.0 |
| 810 | <NA> | M | 188.0 | 86.0 | 46.0 |
| 831 | <NA> | M | 173.0 | 85.0 | 43.0 |
Distribución General:
edad de los sujetos muestra una distribución con una media de 38 años y una desviación estándar de 16 años, indicando una amplia gama de edades entre los participantes.altura y el peso también presentan una variabilidad significativa, lo que refleja una muestra diversa en términos de características físicas. Presentan distribuciones normales con valores medios de 170cm y 68kg respectivamente.sexo), se observa un desequilibrio en la muestra con predominio masculino, lo que podría sesgar el análisis de género.Datos Atípicos:
Matriz de Correlación:
altura y el número de calzado, lo cual es esperado.Consideraciones Adicionales:
Motivo de consulta está vacía y será excluida del análisis.Consideraciones:
Columnas que no aportan información útil para el análisis y por tanto se eliminarán:
CodigoSujetoFecha NacimientoFecha de exploraciónMotivo de consultaEn las columnas incluidas para el análisis se hará lo siguiente:
Sexo - asignar valores binarios ('F': 0, 'M': 1)Edad - imputación basada en modelo predictivo utilizando las columnas 'Sexo', 'Altura', 'Peso' y 'Número de calzado'IMC - se creará una nueva columna 'IMC' (peso en kg dividido por el cuadrado de la altura en metros)Grupo 2 - Patología¶patologia_df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 897 entries, 0 to 896 Data columns (total 5 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 NºPatologia 897 non-null object 1 Articulación 897 non-null object 2 Localizacion 897 non-null object 3 Lado 897 non-null object 4 Patologia 872 non-null object dtypes: object(5) memory usage: 35.2+ KB
missing_percentage = calculate_missing_percentage(patologia_df, patologia_df.columns, visualize=True, figsize=(10,5))
Porcentaje de datos faltantes por columna: Patologia: 2.79%
patologia_df.describe()
| NºPatologia | Articulación | Localizacion | Lado | Patologia | |
|---|---|---|---|---|---|
| count | 897 | 897 | 897 | 897 | 872 |
| unique | 5 | 13 | 28 | 60 | 474 |
| top | 1 | Pie | Posterior | D | Talalgia |
| freq | 698 | 266 | 152 | 154 | 37 |
patologia_df.isnull().sum()
0 NºPatologia 0 Articulación 0 Localizacion 0 Lado 0 Patologia 25 dtype: int64
df['NºPatologia'].value_counts()
NºPatologia 1 698 2 124 3 35 0 34 4 6 Name: count, dtype: int64
Con respecto a 'NºPatologia', parece ser un indicador de múltiples patologías por sujeto. Si un sujeto presenta múltiples problemas, se registra con un número correlativo, lo cual es relevante para entender la complejidad y el número de quejas por sujeto.
print(df['Articulación'].unique())
['Rodilla' 'Sin afectacion' 'Pie' 'Pierna ' 'Tobillo' 'Espalda' 'Cadera' 'Muslo' 'Rodilla ' 'Cadera ' 'Pie ' 'Complejo' 'Lumbar']
print(df['Localizacion'].unique())
['Medial' 'Sin afectacion' 'Posterior' 'Lateral' 'Lumbar' 'Anterior - Posterior' 'posterolateral' 'Plantar' 'Plantar proximal' 'Plantar distal' 'Anterior' 'Dorsal proximal' 'Posteriro' 'Medial-lateral' 'anterolateral' 'Medial-Lateral' 'Medail' 'Dorsal distal' 'Posterior ' 'Planta proximal' 'Complejo' 'Lateral ' 'Planta distal' 'anteromedial' 'mediolateral' 'Interna' 'posteromedial' 'posterior']
print(df['Lado'].unique())
['Bilateral ' 'Ninguno' 'Derecho' 'Izquierda' 'Derecha' 'izquierdo' 'I' 'B' 'D' '-' 'D ' 'I ' 'Bilateral' 'Complejo' 'Izquierdo' 'bilateral' 'Bilateral (+PD)' 'Bilateral +PD' 'Más lado izquierdo' 'Izquierdo ' 'derecho' 'Bilateral (+en I)' 'Bilateral más izquierdo' 'Derehca' 'derecha' 'Bilateral + Izquierda' 'Bilateral (+izquierda)' 'izquierda' 'Left' 'izdo' 'Bilateral +izq.' 'Bilateral (+Derecho)' 'Biltaeral (+D)' 'Pie Izquierdo' 'pie izquierdo' 'Pie derecho' 'Bilateral +dx' 'Bilatera' 'Izquierda ' 'bilateral más en derecha' 'Derecho e izquierdo. ' 'bilateral, ahora más derecho' 'derecha ' 'derecho ' 'Bilaterales' 'Bilateral, peor derecho' 'Talón' 'izquierdo ' 'dereho ' 'bilateral ' 'bilateral, más izquierdo ' 'bilateral. ' 'Bilateral (+D)' 'Derecho (alguna ligera izquierda)' 'derecho/bilateral ' 'izquierda ' 'Bilateral (+izquierdo)' 'Derecha ' 'bilateral más derecha ' 'mas derecho ']
df['Articulación'] = clean_articulacion(df['Articulación'])
df['Localizacion'] = clean_localizacion(df['Localizacion'])
df['Lado'] = clean_lado(df['Lado'])
print(df['Articulación'].unique())
['rodilla' 'sin afectación' 'pie' 'pierna' 'tobillo' 'espalda' 'cadera' 'muslo' 'complejo']
print(df['Localizacion'].unique())
['medial' 'no especificado' 'posterior' 'lateral' 'lumbar' 'anteroposterior' 'posterolateral' 'plantar' 'plantar proximal' 'plantar distal' 'anterior' 'dorsal proximal' 'mediolateral' 'anterolateral' 'dorsal distal' 'anteromedial' 'posteromedial']
# Unificar categorías en 'Localizacion'
df['Localizacion'] = df['Localizacion'].replace({
'anteroposterior': 'general',
'mediolateral': 'general',
'plantar proximal': 'plantar',
'plantar distal': 'plantar',
'dorsal proximal': 'dorsal',
'dorsal distal': 'dorsal',
'posterolateral': 'posterior',
'posteromedial': 'posterior',
'anterolateral': 'anterior',
'anteromedial': 'anterior',
'no especificado': 'no-especificado'
})
print(df['Localizacion'].unique()) # Verificar los cambios realizados
['medial' 'no-especificado' 'posterior' 'lateral' 'lumbar' 'general' 'plantar' 'anterior' 'dorsal']
Verificamos cuántas combinaciones únicas de Articulación' y 'Localización' tendríamos:
# Crear una columna temporal que combine 'Articulación' y 'Localización'
df['Zona_Afectada'] = df['Articulación'] + "_" + df['Localizacion']
print(f"Nº de combinaciones únicas de Articulación y Localización: {df['Zona_Afectada'].nunique()}")
Nº de combinaciones únicas de Articulación y Localización: 35
print(df['Zona_Afectada'].unique())
['rodilla_medial' 'sin afectación_no-especificado' 'pie_medial' 'pierna_posterior' 'tobillo_lateral' 'espalda_lumbar' 'rodilla_lateral' 'rodilla_general' 'pierna_lateral' 'rodilla_posterior' 'pie_plantar' 'rodilla_anterior' 'tobillo_medial' 'tobillo_posterior' 'cadera_lateral' 'pie_lateral' 'muslo_posterior' 'pie_dorsal' 'tobillo_general' 'muslo_lateral' 'cadera_posterior' 'tobillo_anterior' 'pierna_anterior' 'cadera_anterior' 'complejo_no-especificado' 'espalda_posterior' 'pierna_medial' 'cadera_medial' 'pie_no-especificado' 'muslo_general' 'muslo_anterior' 'pie_general' 'pie_anterior' 'muslo_no-especificado' 'pierna_general']
# print(df['Zona_Afectada'].value_counts())
El paso previo es de verificación, la creación de nuevas características se realizará en la etapa de preprocesado.
plot_count(df, 'Zona_Afectada', title="Distribución Zonas Afectadas", xlabel="", ylabel="", figsize=(24,12), palette='Spectral')
print(df['Lado'].unique())
['b' 'ninguno' 'd' 'i' 'no especificado' 'complejo' 'b + r' 'b + i']
catplot(df, 'Articulación', 'Localizacion', 'Distribución de Articulación por Localización', palette='Spectral')
plot_count(df, 'Lado', '', '', 'Frecuencia', figsize=(6, 5), palette="RdBu")
Decidimos unificar las categorías en la columna Lado:
df['Lado'] = df['Lado'].replace({
'b + r': 'b',
'b + i': 'b',
'ninguno': 'no especificado',
})
print(df['Lado'].unique()) # Verificar los cambios realizados
['b' 'no especificado' 'd' 'i' 'complejo']
plot_count(df, 'Lado', '', '', 'Frecuencia', figsize=(6, 5), palette="RdBu")
Para garantizar un análisis preciso y modelos más interpretables, convertiremos la columna Lado en variables binarias que especificarán claramente la afectación anatómica en el lado derecho, izquierdo, o en casos complejos que involucren ambos lados o múltiples áreas. Así, 'bilateral' se representará como presencia en ambas columnas 'derecho' e 'izquierdo', mientras que 'complejo' indicará múltiples áreas afectadas en una columna separada. Esta representación binaria eliminará ambigüedades y reflejará la presencia o ausencia de afectación en cada categoría. Introduciremos estas nuevas columnas a continuación de Lado para mantener una secuencia coherente de los datos.
stacked_barplot(df, 'Articulación', 'Sexo', 'Distribución Sexo - Articulación', palette='tab20')
# Tabla de contingencia
table, chi2, p = contingency_table(df, 'Sexo', 'Articulación')
print(table)
print(f'Chi2: {chi2}, P-value: {p}')
Articulación cadera complejo espalda muslo pie pierna rodilla \ Sexo F 24 3 11 10 122 32 67 M 42 1 14 12 157 55 166 Articulación sin afectación tobillo Sexo F 8 47 M 26 100 Chi2: 20.049220372737288, P-value: 0.010151429262434578
Dado que el valor p es menor que 0.05, podemos concluir que hay una asociación significativa entre el Sexo y la Articulación afectada. Esto sugiere que la distribución de las articulaciones afectadas difiere entre hombres y mujeres.
# Convertir todos los valores a string excepto NaN
unique_patologias = df['Patologia'].str.strip().str.lower().dropna().astype(str).unique()
unique_patologias.sort()
# Imprime los valores únicos ordenados
for patologia in unique_patologias:
print(patologia)
1 año con molestias en pierna derecha cuadriceps espalda. 1mtf 4ºmeta 9 iq rodilla accidente de tráfico ajuste prótesis alguna vez tibial posterior alumno usj ampollas metatarsales aquiles aquiles (sobrecarga) aquiles - nervio peroneo aquiles cortos aquiles dcho-periostitis-fx estrés m2-m3 izq aquiles derecho aquiles derecho alguna molestia en frío aquiles izquierdo aquiles y fascia plantar en pd arco interno y tibial anterior artritis reumatoidea artrodesis tobillo artrosis cadera derecha artrosis metatarsofalángica artrosis rodilla artrosis rodilla. artrosis generalizada artrosis tibio-astragalina asimetria asimetría bajo tono. preocupada por la pisada. biomecanica plantillas borde interno tibial bíceps femoral cadena posterior cadera cadera zona interior cadera/coxis cadera/gluteo caderas caida con diferentes afecciones calcificación en astragalo cambios al andar y en posición cara anterior tibia cara interna tobillo cara medial de rodilla cavo valgo (iq fasciotomía) cintilla cintilla iliotibial cintilla ilitotibial coalición fibrocartilaginosa calcaneo-escafoidea complejo condromalacia bilateral condromalacia rotuliana condropatía condilo femoral medial condropatía femoro-patelar condropatía femoro-tibial condropatía femorotibial externa condropatía patelar vertiente interna. pcl desgarro. condropatía tibio astragalina condropatíafemoro-tibial medial contracturas en psoas y anteversión de pelvis y a veces molestias en glúteo. corré raro y dolor en isquios (deriva victor parra) coxo artrosis dedo dedos en garra y actitud escoliotica deforma el calzado deriva elena por pie valgo deriva marta marcha en add desgaste lateral de calzado dismetría dolor anterior de tobillo dolor anterolateral rodilla dolor arco dolor de espalda en zona lumbar, y dolor en planta del pie derecho dolor de espalda. dolor de pies dolor en 2ºmeta dolor en ambos pies y espalda dolor en arco plantar dolor en el arco dolor en el empeine dolor en el talón y tibial posterior dolor en el tobillo dolor en lateral desde maleolo hasta el pie dolor en trocanter derecho dolor en zona lateral de la pierna dolor entre 1er y 2º dedo dolor entre 2º3º dedo dolor generalizado dolor generalizado en pies dolor hallux dolor lateral de rodilla + lumbar dolor lumbar y planta de los pies dolor lumbar. dolor lumbar/cadera dcha dolor m5 dolor medial rodilla dolor pie dolor piernas dolor pies dolor planta y dorso dolor pretibial dolor tibial medial dolor tobillos dolor y sensación de quemazón y hormigueo lateral dos fracturas vertebrales dorsales y una hernia que le estaba comprimiendo edema astragalo edema navicular edema oseo navicular elh y cintilla empeine en la revisión con el pediatra le dicen que tiene pie valgo. equino escafoides accesorio escoliosis acentuada escoliosisi y lumbar esguince cronico esguince derecho esguince izquierdo con sudexk y alteración nerviosa esguince lpaa esguinces y gemelo espalda y pierna izquierda lumbociatica espolon calcaneo espolón estudio estudio biomecanico estudio de la marcha estudio por abrahan. le molesta dorso de pies evaluar biomecánica fascia fascia plantar fascia plantar derecha fascia plantar y talón fascia y tobillo derecho y rodilla izquierda fascia zona pretibial distal (ecd) fasciosis-fascitis bilateral fascitis fascitis bilateral fascitis izquierda fascitis plantar fascitis plantar bilateral fascitis plantar izquierda mas dolro rodilla medial izquierdo fascitis y cintilla fasctitis plantar flexor del hallux flexor largo del hallux foot fractura 5º fractura de estrés metatarsal fractura de estrés tibial fractura de estrés y periostitis tibial fractura de peroné derecho. fractura de peroné izquierda fractura navicular fractura peroné izquierda y molestia en estiloides 5º meta fractura por stress del sacro fractura sesamoideo lateral bilateral fractura tibia + peroné fracturas estrés pie fredi team. 2019 psoas fredi team/ medio fondo, fondo obstaculos fredy team - pinch callus fredy team. alguna sobre carga en biceps femoral derecho insercion distal. freiberg gemelo gemelo interno gemelo interno de la pierna izquierda gemelos gemelos bilateral gemelos e isquios gemelos isquios gemelos y se le duermen los pies. genu valgo gluteo derecho gluteo mayor glúteo gonartrosis grasa hoffa hallux pie hallux rigidus hav hav incipiente hemiplejia hernia discal (protrusión) y soleos. hormigueo y dolor en juanete hueco popliteo impingement anteromedial pi impingment impingment anterior impingment cadera izquierdo impingment posterior inestabilidad inestabilidad femoropatelar inestabilidad y déficit de movilidad iq lca (semitendinoso) + menisco interno iq tobillo isa macías isam isam, hace 3 meses contratura gluteo medio isquio isquios isquios y cadera isquiotibiales isquiotibiales proximal itb right / hip left juanete/ fascitis plantar lateral rodilla lateral tobillo y pie lca lca bilateral lca, flexum rodilla lesión de ski antigua --> rodilla izquierda. cadera pisada.... columna... lesión labral ligamento coltateral medial ligamento cruzado anterior ligamento lpaa lumbalgia lumbar y empeine (bilateral) lumbar-cadera-rodilla m1-m2 en pd y m5 pi (metatarsalgia) m2 m5 mal apoyo/pie cavo. mala pisada marcha aducta marcha de puntillas marcha en intrarotación. marcha en intraversión marcha puntillas mejorar economía de carrera menisco menisco externo menisco interno menisco interno izquierda y aquiles derecha metatarsalgia metatarsalgia y rodilla metatarsalgia central metatarsalgia central izquierda metatarsalgia de m5 metatarsalgia del 2 metatarsalgia m2 metatarsalgia m4 metatarsalgia y cintilla. (antes cuando se hizo las primeras) metatarsalgia y empeine mete el pie mete los pies hacia adentro mete pie derecho y mete rodillas molestia en peroneo anterior y dorso tobillo. triple salto molestia tendon rotuliano y polo inf rotula molestias en hav (2ª opinión) molestias en la cadera molestias en rodilla derecha varias consultas por dismetría e inestabilidad en ese pie muslo muslo derecho nada necrosis femoral neuroma neuroma de morton neuroma morton neuroma morton y metatarsalgia ninguna molestia ninguna patología no actual, poplíteo ok osteotomía parte posterior del astragalo pata ganso periostitis periostitis bilateral periostitis repetitiva + ahora dolor inguinal periostitis tibial peroneo peroneo/aquiles peroneos izquierdo en calcaneo pia plano valgo e hiperlaxitud pie pie cavo pie cavo - gemelos pie derecho muy supinado pie derecho zona 1er radio pie equino pie izquierdo pie izquierdo (diego) pie izquierdo y lateral rodilla bilateral pie plano pie plano y dolor en el talón pies pies cavos pies cavos traumatologo. molestias rodilla edema derecha. pies planos pies planos valgos pies planos y rodilla valgo pies valgos pies y dismetría. molestia en planta del pie. pinch callus + metarsalgia 2-2 pinzamiento en cadera derecha piramidal y lumbar pisa mal le dice fredi planos valgos planta de los pies planta del pie y aquiles plantillas plantillas - molestias rodilla plantillas_paciente monica popliteo izquierdo . ambos pies post iq protesis unicompartimental prematuro calatayud (hiperextensión rodillas) + pie plano prevención pronación pronación excesiva protesis femoral protesis rodilla compartimento interno psoas psoas derecho y actualmente inicio de molestias en izquierdo. pubalgia recto femoral rendimiento renovacion plantillas renovación renovar en resport - talones retromaleolar retropie valgo revision plantillas revisión revisión escoliosis rodila rodilla rodilla anterior rodilla anterior supra e infra rotuliano rodilla antero lateral rodilla anterolateral rodilla anteromedial rodilla bilateral rotuliano condromalacia rodilla cara externa rodilla cara interna rodilla central rodilla condromalacia (pero tiene dolor posterior) + edema subcondral en tercio medio cartilago tibial externo) rodilla derecha. rodilla lateral rodilla lateral - cintilla rodilla y espalda rodilla zona anterior rodilla zona interna rotuliano rotura bilateral del ligamento lateral tpa rotura de maleolo rotura de menisco interno - pata de ganso rotura de peroné consolidada pero con dolor rotura gemelo d verano (2 meses parada) se carga gemelo y soleo run&fun ruptura de aquiles ruptura tendón de aquiles sacro iliaca sacroiliacas sartorio segunda opinion pies valgos. segunda opinión cirugia pie plano semimembranoso seno tarso sesamoideo sesamoiditis sever sin diagnostico sin patologia / consulta podologica sin problema sindrome seno tarso sindrome tibial anterior sobrecarga gemelos soleo soleo y tibial talalgia talalgia (fasciopatía plantar) talalgia al aumentar km talon talon y lumbar talones talón derecho tendinitis en la planta tendinopatia tendinopatia aquilea tendinopatia peroneo corto y metatarsalgia de 5º tendon aquiles tendon de aquiles tendón aquiles tendón cuadricipital tendón flh tendón peroneo tendón poplíteo tendón rotuliano tendón tibial posterior tenosinovitis tenosinovitis severa tibial posterior y varo de retropie tercer dedo pie tfl cintilla tibial anterior tibial anterior (actualmente + otras) tibial posterio tibial posterior tibial posterior pie plano flexible tobillo tobillo izquierdo + neuroma morton tobillo lateral tobillo medial tobillo-rodilla suprarrotuliano tobillos al correr trauma pie triceps sural trocanteritis tríceps sural tta y zona lumbar uñas de los pies valgo valgo marcado valgo rodilla valoración pediátrica zambo zona dorso lateral
La columna 'Patología' parece contener una gran cantidad de información heterogénea, con una mezcla de nombres de patologías, síntomas, notas clínicas y comentarios que podrían estar más relacionados con el historial médico o el motivo de la consulta que con categorías claras y útiles para un análisis estadístico.
La variable NºPatologia indica el número de patologías por paciente, siendo '1' la más frecuente. Esto sugiere que la mayoría de los sujetos presenta una única queja, aunque hay casos con múltiples afectaciones. Para futuros modelos predictivos o análisis, esta información podría ser clave para identificar la prevalencia y co-ocurrencia de múltiples condiciones en un sujeto.
La heterogeneidad de datos en la columna Patología implica un reto de procesamiento y categorización para su uso en análisis. La viabilidad de su limpieza o exclusión se balanceará con la relevancia clínica y los objetivos del estudio. Actualmente, dada la limitación de tiempo, se excluirá 'Patología' y se focalizará en Articulación, Localizacion y Lado. Futuras mejoras en la recopilación y tratamiento de datos podrán permitir la integración de Patología en análisis más sofisticados.
Las gráficas muestran la distribución de patologías por articulación y localización, siendo el pie (zona plantar) y la rodilla las más afectadas. Además, hay una notable diferencia entre géneros en la frecuencia de problemas articulares, siendo el pie y la rodilla los más comunes en ambos sexos.
Derecho, Izquierdo - Creadas a partir de la columna 'Lado'Zona afectada - Se ha optado por fusionar las columnas 'Articulación' y 'Localización' para formar una nueva variable que proporcionará una perspectiva más integrada y precisa de la zona afectada en cada caso. Esta nueva columna será codificada y utilizada en el análisis predictivo.Zona afectada - Se codificará atendiendo a su relación con la variable de interés, permitiendo así:Con el objetivo de centrar el estudio en aspectos anatómicos y biomecánicos específicos, se procede a la eliminación de ciertas columnas que, aunque proporcionan información clínica, no garantizan un diagnóstico claro y fiable para este análisis. Las decisiones tomadas son las siguientes:
NºPatologia y Patologia: se descartarán estas columnas puesto que la información que contienen no asegura un diagnóstico preciso o una clasificación de patología definida y fiable. En su lugar, se prestará atención a la región anatómica afectada indicada por la nueva columna Zona afectada, la cual refleja la localización de la afección sin asumir la presencia de una patología clínicamente diagnosticada.Lado - Se eliminará después de la etapa de preprocesamiento de los datos (para poder crear las columnas 'Derecho' e 'Izquierdo')Articulación, Localizacion - Serán descartadas una vez que se hayan extraído y codificado adecuadamente los datos necesarios para formar la nueva columna 'Zona afectada'.Grupo 3 - ib_resport_df - Historia Clínica¶ib_resport_df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 897 entries, 0 to 896 Data columns (total 20 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Enf Sistemicas 1 239 non-null object 1 Enfermedades Sistemicas 2 3 non-null object 2 Sintomas narrados 858 non-null object 3 Diagnóstico 1 708 non-null object 4 Dagnóstico 2 2 non-null object 5 IQ 335 non-null object 6 Fecha IQ 24 non-null object 7 Resultado IQ 9 non-null object 8 Tabaco 104 non-null object 9 Alcohol 48 non-null object 10 Medicación 231 non-null object 11 Fármacos 253 non-null object 12 Alergias 162 non-null object 13 Alergenos 174 non-null object 14 Actividad principal 210 non-null object 15 Marca 10K 127 non-null object 16 Especialidad 72 non-null object 17 km/sem 129 non-null object 18 Calzado 1 262 non-null object 19 Calzado 2 202 non-null object dtypes: object(20) memory usage: 140.3+ KB
missing_percentage = calculate_missing_percentage(ib_resport_df, ib_resport_df.columns, visualize=True, figsize=(10,5))
Porcentaje de datos faltantes por columna: Dagnóstico 2: 99.78% Enfermedades Sistemicas 2: 99.67% Resultado IQ: 99.00% Fecha IQ: 97.32% Alcohol: 94.65% Especialidad: 91.97% Tabaco: 88.41% Marca 10K: 85.84% km/sem: 85.62% Alergias: 81.94% Alergenos: 80.60% Calzado 2: 77.48% Actividad principal: 76.59% Medicación: 74.25% Enf Sistemicas 1: 73.36% Fármacos: 71.79% Calzado 1: 70.79% IQ: 62.65% Diagnóstico 1: 21.07% Sintomas narrados: 4.35%
#print(df['Enf Sistemicas 1'].unique())
#print(df['Enfermedades Sistemicas 2'].unique())
#print(df['Diagnóstico 1'].unique())
#print(df['Dagnóstico 2'].unique())
#print(df['IQ'].unique())
print(df['Tabaco'].value_counts())
print(df['Alcohol'].value_counts())
Tabaco Si 92 0 12 Name: count, dtype: int64 Alcohol Si 39 0 9 Name: count, dtype: int64
#print(df['Actividad principal'].unique())
print(df['Marca 10K'].unique())
print(df['Especialidad'].unique())
print(df['km/sem'].unique())
print(df['Calzado 1'].unique())
print(df['Calzado 2'].unique())
[nan 45 65 33 36 55 50 48 34 53 40 31.21 39 60 57 29 70 39.11 37 34.19 32 30.27 51 35 56 0 31.4 28 44.5 49 38 35.45 43 44 40.1 47 29.5 33.5 67 42 54] [nan 'Media y trail. ' 'amateur' 'amteur ' 'Triatlon' 'Nacional ' 'Europeo' 'Obstáculos' '5k-20k' 'Elite' 'Recreacional' '1500' 'Amateur' 0 '1500-3000 obs' 'Nacional' '400 y 800' '800/1500' '400-800' '3000/1500' 'Marcha ' '800-1500' '600/1000' 'TRIATLON' 'Sub40' 'Trail/larga distancia' 'Velocidad' 'Fondo' 'Ultra' 'Trail /Cross' 'Triple salto y longitud. Velocidad' 'Trail' '5000 (13:29)' 'Ultra trail. ' '1500 /elite' 'Salto altura' 'Sprint ' '2ª nacional ' 'Amateur ' 'amateur ' 'Mil y cross' 'nacional' '3+1 ' '2 + 1 ' '400/800' 'Salto longitud'] [nan '6d/sem' '20 ' '100' '2h/d caminar ' 40 '15-20 ' '15-20' 49 '60-80' 100 '20-25' '20' '50-60' '40-50' 25 '40' '25' '35-40' '63-90 ' '130-140 ' '90-120' '50' 30 '70' '30' '90' 15 '30-35' '90-110' 0 '30-40' '80' '70-80' '45-50' '150' '30 ' '60' '45' '25-30' '90-100' '60-65' 10 20 '70-100' '60-70' '13 ' '120-130' '85-90' 3 '25/30' '20-30' '10-15' '40-80' '40-60' '20-10 ' 80 '80 ' '15' '10 ' '20-25 ' datetime.datetime(2024, 6, 5, 0, 0) '20-50'] [nan 'Nike kiger' 'Saucony ' 'Deportivo' 'On ' 'Hoka y new balance ' 'Deportivo/ Salomón Nike ' 'Deportiva y Zapato de tacón' 'Ultraboost ' 'Nike Air zoom Hyperace 2 .' 'Brooks Ghost' 'Nike pegasus ' 'Brooks glycerin' 'asics ' 'pegasus 38' 'Hoka clifton 3-4 años. ' 'Skechers' 'Vans ' 'Asics neutras ' 'ON ' 'Nike revolution, crocs' 'Reebock, asics ' 'Hoka Clifton ' 'Saucony peregrin ' 'Adidas stabil (balonmano) ' 'Salomón ' 'J\x90hayber' 'Hoka clifton' 'Hoka clifton ' 'asics nimbus. ' 'Asics gel kayano' 'Asics Kayano ' 'Brooks cascadia ' 'ON (no contento) ' 'Skechers asics culumbus' '5.10 bota. Laesportiva' 'Zapato de vestir ' 'Asics gel nimbus' 'Hoka Bondi (no ha llegado a correr) ' 'asics gel pulse 13 ' 'Deportivo de calle. ' 'Zapatillas. ' 'Skechers ' 'columbus, NB574 ' 'GEL KAYANO' 'ASICS Gel nimbus' 'Adidas ultraboost ' 'nike pegasus. ' 'Brooks reactive' 'brooks launch 8. ' 'Nike Pegasus ' 'Pegasus tiempos más largos. ' 'mizuno ' 'Brooks adrenalin GTS ' 'Nike pegasus - Adizero pro 2' 'Adidas Adizero pro ' 'Nova Blas 2 // Metaspeed sky // Metaspeed LD ' 'Nike pegasus' 'Salomon-sense 4 pro1' 'Calzado de seguridad' 'Adidas adizero adiós 4 ' 'DS Trainer' 'Nike pegasus 37, nike infinity react y Adidas adios 5 ' 'Adidas adizero boston. Adizero adios pro, ' 'Nike Zoom Fly' 'Brooks ghost ' 'Adidas Solarglide y adizero Avanti tio ' 'Adidas SL 20 (rodaje rápido)' 'Variado' 'Entrenamiento Hoka Rincón (entre 3 y 5 min el km)' 'Adizero Adios (entrenó rápido)' 'ASICS NIMBUS 21' 'Zoom vomero 14' 'Hoka Rincón 2' 'Nike Lebron' 'Pegasus 36' 'Pegasus 35 entreno' 'Nike Epic React' 'Adidas solar Boost ' 'Pegasus 37' 'Saucony Triumph 18' 'Pegasus 35' 0 '38' 'Mizuno Wave sky 3' 'Adizero Boston' 'Nike Pegasus 33' 'Ultra Boost. ' 'HOka speedgoat' 'ADizero y Nike 4% series' 'GT2000 asics' 'Nike Pegasus 37' 'Adidas Solar Boost' 'Adidas ultra boost' 'Altra Torin 4.5' 'Adidas Boston' 'Adizero adiós pro' 'Adidas Solar drive' 'Nike Pegasus 36' 'Adidas solar boost' 'Asics gel excite 7' 'Brooks Ricochet ' 'Vomero' 'Ultra Boost 20. ' 'Brooks glicerine. ' 'NB BeaconV3' 'Asics Gt4000' 'Vaporfly 4' 'Adidas Ultra Boost 19' 'Nike pegasus turbo 2. ' 'Calzado de basket (caña alta) ' 'Nike Vomero' 'PEGASUS ' 'Deportiva plana ' 'Deportivo ' 'Hoka cavu' 'Deportivo y zapato del cole ' 'Vaporfly ' 'Esportiva , brooks catmount' 'Salomon Slab Ultra3' 'Asics Gel Kayano 25' 'Nike Pegasus' 'Nike react' 'Deportiva' 'Brooks glycerin ' 'Adidas ' 'Brooks ricochet' 'Pegasus' 'Hoka Rocket x ' 'New Balance 1500V3' 'NB 1080 ' 'Varias adidas (solarboost ultraboost)' 'Brooks cascadia' 'Baloncesto Nike Performance Giannis inmortality' 'Bota ' 'Mizuno wave mizuno ' 'Under Armour Pursuit' 'Asics ' 'Saucony endorfina shift' 'Nike Pegasus 38 (Tokyo)' 'Adidas Ultraboost 27' 'Mizuno wave ' 'Nike varo ' 'Hoka Bondi' 'Vomero 15 ' 'Nike Pegasus 38' 'Nike revolución (similar a la epic react)' 'Saucony Ride' 'Saucony triunph' 'Deportivo y plano ' 'Epic react ' 'Bota militar ' 'Mucich diario. asics GT-express ' 'Asics Nimbus. ' 'Adizero Boston ' 'Mocasin ' 'Nike Pegasus Trail' 'ON y Pegasus ' 'Adidas Boston 10, Avanti pista ' 'Deportivo/chanclas para trabajar. ' 'Clifton y bota de seguridad' 'Nike Tempo Nike Alphafly' 'Mizuno wave rider ' 'Quechua' 'Deportivo // Mizuno Wave rider y Mizuno Wave Horizon (no le gustan) ' 'Nike pegasus // Adidas adiós 4 ' 'Deportivo Saucony Kinvara y adidas Ultra Boost ' 'Asics Cumulus ' 'Joma super cross' 'NB' 'Adidas Adizero pro // Altra Mont Blanc' 'Asics Stratus ' 'Brooks levitate (septiembre) ' 'Deportiva. ' 'Brooks Glycerin ' 'Calzado uniforme ' 'Hoka Elevon y Nike vaporfly ' 'Adidas solarboost // Joma R_3000 con placa para // Avanti para competir ' 'Brooks Ghost ' 'Bota y deportivas ' 'Adidasultraboost ' 'Hoka Clifton (antes Hoka Rincón)' 'Deportiva y suele plataforma ' 'HAbitualmente deportivo ' 'Adidas Boston 10. Salomon para montaña ' 'Montaña con horma estrecha y suela dura y fina ' 'Asics pulse ' 'deportiva plana y zuecos en consulta ' 'Pikolinos' 'Deportivas, Bota montaña y Salomon Sense ' 'Merrell (con las que más cómoda va) ' 'Kalenji ' 'Puma veloci ' 'Nike pegasus turbo. ' 'Brooks ghost o adrenaline' 'Nike vomero ' 'Adidas futbol y Nike pegasus para correr' 'Adidas solarglide/ Adidas adizero ' 'Asics Gel pulse 14. '] [nan 'Brooks ricochet ' 'Nike react (placa) ' 'La sportiva akasha ' 'Asics gel nimbus ' 'New balance hierro' 'Nike Vaporfly' 'Series : Nike tempo ' '42' '43' '45,5' '44' 'Supernova (notaba mas impacto)' 'Ultraboost 19 para largo' '37.5' '39 ' 'Adidas Boston Adizero' '41' 'Adidas Boston 19' 'Clinton las únicas que va sin dolor. ' '44,5 ' 'Rueda con las superglide' 'Hoka speed goat ' 'Zoom fly' 'Nike Strike 7 / Mamba 5' 0 'Recomendamos Structure o Trascend' 'Adidas adizero adios' 'Clavos Adidas Adizero Finese' 'Mizuno waveskyrace' 'Nike Vomero y react largo ' 'Adidas RC2 (clavos Nike RivalD)' 'Nike Tempo / Clavos:zoom Victory 3 o NB MD 800' 'Nike dragon Flynn' 'Adidas Solar Glide St (probadora)' 'Solarboost ' 'Solar glide St' 'Adidas Boston. ' 'Brooks revel' 'Superfly elite 2 - adizero avanti ' 'Trail: Adidas Terrex / Boston / Adizero Adiós Pro' 'Salomon ultra pro' 'Nike Zoom Rival' 'VAPORFLY NEXT' 'Adidas Adizero Adios 5' 'Salomon SRide.' 'Adizero y unas Nike clavos. ' 'Epic React' 'Salomon Slab ultra 3 ' 'NB tempo y NB fuel cell ' 'Competir salomon Slab sense7' 'Nike pegasus 38' 'Saucony endorphin Speed /pegasus 38 para trail. ' 'Pegasus' 'Nike Vaporfly (adizero adios 4)' 'Brooks cascadia' 'La Sportiva xrt' '37/40 ferula' '45' '38' '40' '37' '39' '40 ' '42.5' '42.5 ' '42,5' '31' '44.5' '39.5' '46' '41,5 ' '38.5' '33' '37 ' '43,5' '38 ' '47' '44.5 ' '38.5 ' '45 ' '36' '43.5 ' '44,5']
El tercer subgrupo de columnas presenta un desafío significativo debido a la alta incidencia de datos faltantes en la mayoría de las variables, aunque Síntomas narrados y Diagnóstico 1 han permitido rellenar parcialmente información en columnas clave como 'Articulación', 'Localización' o 'Lado'.
Sin embargo, estas columnas no serán consideradas en el modelo predictivo actual, que se enfocará en datos antropométricos y biomecánicos o exploratorios. Las variables como Tabaco, Alcohol y Medicación, aunque potencialmente relevantes para un análisis de riesgo de lesión, presentan ambigüedad en sus datos faltantes y, por lo tanto, serán omitidas en esta fase.
Es importante mencionar que la segmentación de la población entre corredores y no corredores no se realizó adecuadamente, lo cual podría haber permitido análisis más específicos, especialmente en deportistas donde factores como km/sem o calzado son relevantes. Para futuros estudios, se recomienda mejorar la toma de registros de este subgrupo y establecer un protocolo de limpieza y unificación de categorías que permita un análisis más detallado y confiable.
Grupo 4 - runscribe_walk_df - Datos Biomecánicos de Marcha¶runscribe_walk_df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 897 entries, 0 to 896 Data columns (total 58 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Pace_walk 755 non-null object 1 Velocidad_walk 755 non-null object 2 Step Rate_walk 755 non-null object 3 Stride Length_walk 755 non-null object 4 Contact Time_walk 755 non-null object 5 Flight Ratio_walk 755 non-null object 6 Power_walk 755 non-null object 7 Shock_walk 755 non-null object 8 Impact Gs_walk 755 non-null object 9 Braking Gs_walk 755 non-null object 10 Footstrike Type_walk 755 non-null object 11 Pronation Excursion_walk 755 non-null object 12 Max Pronation Velocity_walk 755 non-null object 13 Peak Vertical GRF_walk 755 non-null object 14 Contact Ratio_walk 755 non-null object 15 Flight Time_walk 755 non-null object 16 Stride Angle_walk 755 non-null object 17 Leg Spring Stiffness_walk 755 non-null object 18 Vertical Spring Stiffness_walk 755 non-null object 19 Vertical GRF Rate_walk 755 non-null object 20 Horizontal GRF Rate_walk 749 non-null object 21 Swing Force Rate_walk 749 non-null object 22 VO<sub>2</sub>_walk 749 non-null object 23 Total Force Rate_walk 749 non-null object 24 Time (Max Swing->FS)_walk 755 non-null object 25 Time (FS->MPV)_walk 755 non-null object 26 Time (MPV->MP)_walk 755 non-null object 27 Time (MP->TO)_walk 755 non-null object 28 Time (Min Swing->Max Swing)_walk 755 non-null object 29 Time (TO->Min Swing)_walk 755 non-null object 30 Medio Lateral Gs_walk 755 non-null object 31 Braking Gs (Amplitude)_walk 754 non-null object 32 Impact Gs (Amplitude)_walk 754 non-null object 33 Vertical Speed_walk 755 non-null object 34 Elevation Gain_walk 718 non-null object 35 Yaw Excursion_walk 755 non-null object 36 Swing Excursion_walk 755 non-null object 37 Yaw Excursion (MP->TO)_walk 755 non-null object 38 Yaw Excursion (Swing)_walk 755 non-null object 39 Max Stance Velocity (FS->MP)_walk 755 non-null object 40 Max Stance Velocity (MP->TO)_walk 755 non-null object 41 Step Length_walk 755 non-null object 42 Pronation Excursion (MP->TO)_walk 755 non-null object 43 Stance Excursion (FS->MP)_walk 755 non-null object 44 Stance Excursion (MP->TO)_walk 755 non-null object 45 Min Tilt_walk 652 non-null object 46 Max Tilt_walk 652 non-null object 47 Min Obliquity_walk 652 non-null object 48 Max Obliquity_walk 652 non-null object 49 Min Rotation_walk 652 non-null object 50 Max Rotation_walk 652 non-null object 51 Max Tilt Rate_walk 652 non-null object 52 Max Obliquity Rate_walk 652 non-null object 53 Max Rotation Rate_walk 652 non-null object 54 Vertical Oscillation_walk 652 non-null object 55 Braking Gs2_walk 755 non-null object 56 Impact Gs2_walk 755 non-null object 57 Medio Lateral Gs2_walk 536 non-null object dtypes: object(58) memory usage: 406.6+ KB
El conjunto de datos contiene una serie de variables cuantitativas y cualitativas que reflejan diferentes aspectos del movimiento y la biomecánica durante la marcha, capturadas mediante dispositivos RunScribe. Las observaciones clave para cada variable, con base en los datos proporcionados, incluyen:
runscribe_walk_df.head()
| Pace_walk | Velocidad_walk | Step Rate_walk | Stride Length_walk | Contact Time_walk | Flight Ratio_walk | Power_walk | Shock_walk | Impact Gs_walk | Braking Gs_walk | Footstrike Type_walk | Pronation Excursion_walk | Max Pronation Velocity_walk | Peak Vertical GRF_walk | Contact Ratio_walk | Flight Time_walk | Stride Angle_walk | Leg Spring Stiffness_walk | Vertical Spring Stiffness_walk | Vertical GRF Rate_walk | Horizontal GRF Rate_walk | Swing Force Rate_walk | VO<sub>2</sub>_walk | Total Force Rate_walk | Time (Max Swing->FS)_walk | Time (FS->MPV)_walk | Time (MPV->MP)_walk | Time (MP->TO)_walk | Time (Min Swing->Max Swing)_walk | Time (TO->Min Swing)_walk | Medio Lateral Gs_walk | Braking Gs (Amplitude)_walk | Impact Gs (Amplitude)_walk | Vertical Speed_walk | Elevation Gain_walk | Yaw Excursion_walk | Swing Excursion_walk | Yaw Excursion (MP->TO)_walk | Yaw Excursion (Swing)_walk | Max Stance Velocity (FS->MP)_walk | Max Stance Velocity (MP->TO)_walk | Step Length_walk | Pronation Excursion (MP->TO)_walk | Stance Excursion (FS->MP)_walk | Stance Excursion (MP->TO)_walk | Min Tilt_walk | Max Tilt_walk | Min Obliquity_walk | Max Obliquity_walk | Min Rotation_walk | Max Rotation_walk | Max Tilt Rate_walk | Max Obliquity Rate_walk | Max Rotation Rate_walk | Vertical Oscillation_walk | Braking Gs2_walk | Impact Gs2_walk | Medio Lateral Gs2_walk | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1.2916 | 5 | 108.456898 | 1.4267 | 705.166667 | 0 | 95.981481 | 3.566339 | 2.310324 | 2.610172 | 6.314815 | -11.106498 | 177.510574 | 1.139044 | 127.44998 | -152.018519 | 9.059576 | 0.453526 | 0 | 13.915741 | 2.530533 | 0.030474 | 6.644113 | 24.95212 | 192.62963 | 19.203704 | 83.351852 | 602.611111 | 360.574074 | 21.62963 | 0.514759 | 2.155093 | 2.3125 | 0 | 16.300926 | 1.901933 | 65.427959 | 1.383976 | 4.583635 | 296.292913 | 484.714089 | 0.7133 | -14.72513 | 19.445907 | 62.315404 | -5.298624 | 4.002906 | -3.565694 | 5.716446 | -3.094924 | 2.38832 | 74.536365 | 49.889465 | 93.90372 | 30.344643 | 2.610172 | 2.310324 | NaN |
| 1 | 1.370079 | 5 | 114.767847 | 1.4312 | 649.517241 | 0 | 136.534483 | 3.119538 | 1.900867 | 2.387259 | 6.948276 | -8.176466 | 109.542317 | 1.222143 | 124.224798 | -126.896552 | 6.403624 | 48.715603 | 0 | 15.115353 | 2.673316 | 0.159367 | 8.925714 | 30.589598 | 121.245614 | 42.37931 | 78.62069 | 528.517241 | 339.724138 | 34.793103 | 0.637391 | 1.323276 | 1.306034 | -0.457 | 14 | 0.185619 | 63.307126 | 2.467419 | 3.750284 | 241.020467 | 532.549636 | 0.7156 | 0.962024 | 17.340533 | 55.030184 | -4.251966 | 2.401577 | -3.402549 | 3.958606 | -3.100207 | 4.067394 | 59.523014 | 34.808347 | 45.384226 | 23.901517 | 2.387259 | 1.900867 | NaN |
| 2 | 1.371909 | 5 | 100.149777 | 1.6437 | 775.744681 | 0 | 100.787234 | 2.368494 | 1.597828 | 1.558757 | 10.680851 | -4.411249 | 144.662411 | 1.091726 | 129.442638 | -176.595745 | 10.637696 | 7.981094 | 0 | 12.657472 | 2.785581 | 0.29757 | 9.790736 | 32.726926 | 106.680851 | 5.255319 | 37.106383 | 733.382979 | 370.574468 | 27 | 0.537651 | 1.611702 | 1.25 | -10.9844 | 3.597826 | 0.924553 | 82.060187 | 3.086117 | 8.109723 | 283.071966 | 564.581687 | 0.8218 | 0.192496 | 8.006323 | 77.799223 | -3.718124 | 4.023933 | -3.135851 | 3.355565 | -3.749373 | 2.686873 | 31.332204 | 40.367898 | 29.675547 | 19.19568 | 1.558757 | 1.597828 | NaN |
| 3 | 1.318286 | 5 | 103.976334 | 1.5381 | 733.48 | 0 | 101.42 | 2.667928 | 1.708754 | 1.985392 | 11.18 | -4.351264 | 123.764646 | 1.149516 | 127.091716 | -156.42 | 8.991884 | 598.235028 | 0 | 13.385676 | 2.615824 | 0.145732 | 7.967042 | 28.22087 | 148.78 | 15.72 | 31.96 | 685.8 | 358.94 | 38.8 | 0.841172 | 1.4325 | 1.74 | -22.5 | 3.038462 | -0.290622 | 91.4922 | 5.121574 | 15.046578 | 264.414068 | 466.721194 | 0.769 | 6.506884 | 7.471882 | 81.783758 | -4.479488 | 3.6198 | -3.219069 | 4.110612 | -2.138488 | 2.685047 | 30.340461 | 56.140367 | 49.883676 | 37.758259 | 1.985392 | 1.708754 | NaN |
| 4 | 1.362836 | 5 | 99.06266 | 1.6541 | 812.64 | 0 | 124.38 | 3.610964 | 2.665554 | 2.3693 | 7.9 | -10.180634 | 271.162108 | 0.981864 | 134.149908 | -206.9 | 14.254498 | 0 | 0 | 12.07416 | 2.799688 | 0.352276 | 10.241722 | 33.841236 | 94.1 | 26.14 | 37.64 | 748.86 | 353.04 | 20.22 | 0.397274 | 1.91875 | 2.19875 | -1.9805 | -0.005 | 4.518138 | 91.66532 | -0.047806 | 12.018136 | 378.706056 | 581.435544 | 0.827 | -6.480006 | 14.944068 | 89.849386 | -4.195328 | 3.364278 | -3.856456 | 6.265153 | -3.789078 | 3.724616 | 35.989772 | 44.612887 | 47.443397 | 16.321566 | 2.3693 | 2.665554 | NaN |
missing_percentage = calculate_missing_percentage(runscribe_walk_df, runscribe_walk_df.columns, visualize=True, figsize=(12,6))
Porcentaje de datos faltantes por columna: Medio Lateral Gs2_walk: 40.25% Vertical Oscillation_walk: 27.31% Max Rotation Rate_walk: 27.31% Max Obliquity Rate_walk: 27.31% Max Tilt Rate_walk: 27.31% Max Rotation_walk: 27.31% Min Rotation_walk: 27.31% Max Obliquity_walk: 27.31% Min Obliquity_walk: 27.31% Max Tilt_walk: 27.31% Min Tilt_walk: 27.31% Elevation Gain_walk: 19.96% Horizontal GRF Rate_walk: 16.50% Total Force Rate_walk: 16.50% VO<sub>2</sub>_walk: 16.50% Swing Force Rate_walk: 16.50% Impact Gs (Amplitude)_walk: 15.94% Braking Gs (Amplitude)_walk: 15.94% Step Length_walk: 15.83% Max Stance Velocity (MP->TO)_walk: 15.83% Max Stance Velocity (FS->MP)_walk: 15.83% Pronation Excursion (MP->TO)_walk: 15.83% Stance Excursion (MP->TO)_walk: 15.83% Braking Gs2_walk: 15.83% Yaw Excursion (Swing)_walk: 15.83% Yaw Excursion (MP->TO)_walk: 15.83% Swing Excursion_walk: 15.83% Yaw Excursion_walk: 15.83% Impact Gs2_walk: 15.83% Vertical Speed_walk: 15.83% Stance Excursion (FS->MP)_walk: 15.83% Pace_walk: 15.83% Medio Lateral Gs_walk: 15.83% Velocidad_walk: 15.83% Step Rate_walk: 15.83% Stride Length_walk: 15.83% Contact Time_walk: 15.83% Flight Ratio_walk: 15.83% Power_walk: 15.83% Shock_walk: 15.83% Impact Gs_walk: 15.83% Braking Gs_walk: 15.83% Footstrike Type_walk: 15.83% Pronation Excursion_walk: 15.83% Max Pronation Velocity_walk: 15.83% Peak Vertical GRF_walk: 15.83% Contact Ratio_walk: 15.83% Flight Time_walk: 15.83% Stride Angle_walk: 15.83% Leg Spring Stiffness_walk: 15.83% Vertical Spring Stiffness_walk: 15.83% Vertical GRF Rate_walk: 15.83% Time (Max Swing->FS)_walk: 15.83% Time (FS->MPV)_walk: 15.83% Time (MPV->MP)_walk: 15.83% Time (MP->TO)_walk: 15.83% Time (Min Swing->Max Swing)_walk: 15.83% Time (TO->Min Swing)_walk: 15.83%
runscribe_columns = [col.strip() for col in runscribe_walk_df.columns]
df.columns = df.columns.str.strip()
# Convertir columnas a numérico
for column in runscribe_columns:
if column in df.columns:
df[column] = pd.to_numeric(df[column], errors='coerce')
missing_values = df[runscribe_columns].isna().sum()
more_than_200 = missing_values[missing_values > 200]
between_150_and_200 = missing_values[(missing_values > 150) & (missing_values <= 200)]
between_100_and_150 = missing_values[(missing_values > 100) & (missing_values <= 150)]
less_than_100 = missing_values[missing_values < 100]
Step Rate) es de aproximadamente 111 pasos por minuto con una longitud de paso (Stride Length) promedio de 1.56 metros, lo que indica una tendencia hacia un paso más frecuente y más corto en la muestra analizada.Contact Time) y tiempos de vuelo (Flight Time) en rangos consistentes, sugiriendo similitudes en la mecánica de marcha.Impact Gs) y frenado (Braking Gs) presentan una amplia variabilidad, lo que podría indicar diferencias significativas en el estilo de marcha, posiblemente relacionadas con el riesgo de lesión o la eficiencia de la marcha.print(more_than_200.index.tolist())
['Min Tilt_walk', 'Max Tilt_walk', 'Min Obliquity_walk', 'Max Obliquity_walk', 'Min Rotation_walk', 'Max Rotation_walk', 'Max Tilt Rate_walk', 'Max Obliquity Rate_walk', 'Max Rotation Rate_walk', 'Vertical Oscillation_walk', 'Medio Lateral Gs2_walk']
print(between_150_and_200.index.tolist())
['Elevation Gain_walk']
print(between_100_and_150.index.tolist())
['Pace_walk', 'Velocidad_walk', 'Step Rate_walk', 'Stride Length_walk', 'Contact Time_walk', 'Flight Ratio_walk', 'Power_walk', 'Shock_walk', 'Impact Gs_walk', 'Braking Gs_walk', 'Footstrike Type_walk', 'Pronation Excursion_walk', 'Max Pronation Velocity_walk', 'Peak Vertical GRF_walk', 'Contact Ratio_walk', 'Flight Time_walk', 'Stride Angle_walk', 'Leg Spring Stiffness_walk', 'Vertical Spring Stiffness_walk', 'Vertical GRF Rate_walk', 'Horizontal GRF Rate_walk', 'Swing Force Rate_walk', 'VO<sub>2</sub>_walk', 'Total Force Rate_walk', 'Time (Max Swing->FS)_walk', 'Time (FS->MPV)_walk', 'Time (MPV->MP)_walk', 'Time (MP->TO)_walk', 'Time (Min Swing->Max Swing)_walk', 'Time (TO->Min Swing)_walk', 'Medio Lateral Gs_walk', 'Braking Gs (Amplitude)_walk', 'Impact Gs (Amplitude)_walk', 'Vertical Speed_walk', 'Yaw Excursion_walk', 'Swing Excursion_walk', 'Yaw Excursion (MP->TO)_walk', 'Yaw Excursion (Swing)_walk', 'Max Stance Velocity (FS->MP)_walk', 'Max Stance Velocity (MP->TO)_walk', 'Step Length_walk', 'Pronation Excursion (MP->TO)_walk', 'Stance Excursion (FS->MP)_walk', 'Stance Excursion (MP->TO)_walk', 'Braking Gs2_walk', 'Impact Gs2_walk']
print(less_than_100.index.tolist())
[]
# Cuántas filas se eliminarían si se quitan las que tienen al menos un NaN
rows_with_nan = runscribe_walk_df.isna().any(axis=1).sum()
print(f"Total de filas que se eliminarían con dropna(): {rows_with_nan}")
print(f"Porcentaje de datos que se perderían: {100 * rows_with_nan / len(runscribe_walk_df):.2f}%")
Total de filas que se eliminarían con dropna(): 390 Porcentaje de datos que se perderían: 43.48%
corr_matrix = df[runscribe_columns].corr()
plot_heatmap(corr_matrix=corr_matrix, figsize=(26, 22), cmap='GnBu', title='', annot=False)
# Visualizamos solo las columnas con menos de 200 valores faltantes
missing_values = df[runscribe_columns].isna().sum()
less_than_200_missing = missing_values[missing_values < 200]
columns_less_than_200 = less_than_200_missing.index.tolist()
corr_matrix = df[columns_less_than_200].corr()
plot_heatmap(corr_matrix=corr_matrix, figsize=(26, 22), cmap='GnBu', title='', annot=False)
La matriz de correlación muestra patrones de asociación significativos entre variables. Por ejemplo, Pace_walk y Stride Length_walk están altamente correlacionadas, lo que indica que la longitud de zancada es un factor determinante del ritmo de marcha.
Sin embargo, existen variables con correlaciones negativas como Step Rate_walk y Contact Time_walk, sugiriendo que a mayor cadencia, el tiempo de contacto con el suelo es menor.
Para un análisis de lesiones en la marcha, variables como Pace_walk, Step Rate_walk, y Contact Time_walk pueden ser relevantes, ya que ofrecen información directa sobre la eficiencia y estilo de marcha, lo cual puede influir en el riesgo de lesión.
Impact Gs_walk y Braking Gs_walk también son críticos, dado que representan las fuerzas que actúan sobre el cuerpo y que pueden relacionarse con el desarrollo de lesiones por sobreuso.
# Seleccionamos posibles variables de interés
columns_selected = ['Pace_walk', 'Velocidad_walk', 'Step Rate_walk', 'Stride Length_walk', 'Contact Time_walk', 'Flight Time_walk', 'Power_walk', 'Shock_walk', 'Impact Gs_walk', 'Braking Gs_walk', 'Footstrike Type_walk', 'Max Pronation Velocity_walk', 'Total Force Rate_walk']
df[columns_selected].describe()
| Pace_walk | Velocidad_walk | Step Rate_walk | Stride Length_walk | Contact Time_walk | Flight Time_walk | Power_walk | Shock_walk | Impact Gs_walk | Braking Gs_walk | Footstrike Type_walk | Max Pronation Velocity_walk | Total Force Rate_walk | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| count | 755.000000 | 755.000000 | 755.000000 | 755.000000 | 755.000000 | 755.000000 | 755.000000 | 755.000000 | 755.000000 | 755.000000 | 755.000000 | 755.000000 | 749.000000 |
| mean | 1.348776 | 4.973245 | 111.432976 | 1.455166 | 687.272264 | -144.547469 | 125.350629 | 2.328895 | 1.552843 | 1.641329 | 8.265321 | 164.955578 | 22.033040 |
| std | 0.155352 | 0.276103 | 7.409574 | 0.163897 | 52.610788 | 35.850017 | 74.884312 | 0.879755 | 0.667430 | 0.651110 | 2.592603 | 73.611686 | 7.946033 |
| min | 0.083356 | 2.000000 | 85.079444 | 0.080300 | 298.187500 | -273.675000 | 0.000000 | 0.749673 | 0.445394 | 0.586561 | 1.250000 | 0.000000 | 5.951576 |
| 25% | 1.360833 | 5.000000 | 107.177189 | 1.406050 | 660.163693 | -158.489641 | 85.603231 | 1.746109 | 1.132492 | 1.209095 | 6.138736 | 117.562723 | 14.861188 |
| 50% | 1.370596 | 5.000000 | 110.897415 | 1.473000 | 686.222222 | -147.215116 | 111.017857 | 2.096426 | 1.366569 | 1.509082 | 8.537037 | 153.635847 | 20.207560 |
| 75% | 1.379297 | 5.000000 | 114.977203 | 1.533000 | 714.692194 | -133.720247 | 145.863942 | 2.665595 | 1.812780 | 1.887925 | 10.334987 | 199.379041 | 27.909278 |
| max | 2.793561 | 8.000000 | 165.522552 | 2.325800 | 938.800000 | 506.486486 | 746.627451 | 8.328855 | 6.403026 | 5.236189 | 15.403509 | 738.698327 | 70.653675 |
El análisis estadístico revela una consistencia en las mediciones de la marcha, con la mayoría de las variables presentando una desviación estándar relativamente baja en comparación con la media, lo cual sugiere una homogeneidad en el comportamiento de la marcha entre los participantes.
La correlación alta entre Pace_walk y Stride Length_walk indica que estas medidas están intrínsecamente vinculadas y podrían utilizarse indistintamente o una sobre la otra para simplificar el modelo. Sin embargo, la presencia de valores atípicos, especialmente en variables como Power_walk y Flight Time_walk, requiere una investigación adicional para garantizar la calidad del dato.
Las métricas que presentan una alta variabilidad, como Power_walk y Max Pronation Velocity_walk, pueden reflejar diferencias individuales significativas o errores de medición. Los valores negativos en Flight Time_walk deben ser interpretados con precaución.
corr_matrix = df[columns_selected].corr()
plot_heatmap(corr_matrix=corr_matrix, figsize=(10, 8), cmap='GnBu', title='', annot=True)
La matriz de correlación actualizada con valores numéricos resalta la fuerte correlación positiva entre Pace_walk y Stride Length_walk (0.82), lo que indica que un ritmo más rápido está estrechamente ligado a pasos más largos. Las correlaciones altas entre Impact Gs_walk, Shock_walk y Braking Gs_walk (0.93 y 0.92 respectivamente con Impact Gs_walk y 0.71 entre sí) sugieren que estas medidas de fuerza y choque durante la marcha están muy relacionadas; a mayor impacto y choque experimentado durante la marcha, hay también una mayor fuerza de frenado. Esto podría ser relevante en la comprensión de cómo las fuerzas externas son absorbidas y gestionadas por el cuerpo durante la marcha, lo cual es crucial para evaluar el riesgo de lesiones.
La correlación negativa fuerte entre Step Rate_walk y Contact Time_walk (-0.94) confirma que los pasos más rápidos conllevan a un tiempo de contacto con el suelo más breve, lo que puede afectar la eficiencia de la marcha y la estabilidad. Estos resultados destacan la importancia de considerar cómo las interacciones entre diferentes aspectos de la marcha pueden influir en la biomecánica general y los posibles riesgos asociados.
plot_data_histogram(df[columns_selected], 20, (20, 24), column_wrap=3)
Las gráficas de histograma muestran la distribución de cada variable relacionada con la marcha. Observamos que la mayoría de las variables como Pace_walk, Velocidad_walk, Step Rate_walk y Stride Length_walk tienen distribuciones sesgadas, lo que sugiere concentraciones en ciertos rangos de valores y la presencia de valores atípicos, posiblemente debido a diferencias individuales en el estilo de marcha o errores de medición.
Por ejemplo, la concentración alrededor de valores bajos en Pace_walk y Stride Length_walk indica un ritmo generalmente lento con pasos más cortos en la muestra, mientras que los valores atípicos en el extremo superior podrían representar casos individuales de marcha rápida o errores de medición.
La variable Contact Time_walk muestra una distribución aproximadamente simétrica centrada en un tiempo medio de contacto, lo que sugiere una consistencia en esta métrica entre los sujetos.
Las variables Power_walk, Shock_walk, Impact Gs_walk, Braking Gs_walk, y Total Force Rate_walk tienen distribuciones con un sesgo hacia valores más bajos, implicando una tendencia hacia menores fuerzas de impacto y choque durante la marcha en la muestra estudiada.
La interpretación de estos resultados puede ofrecer insights sobre la eficiencia y las características de riesgo de la marcha, que podrían ser cruciales para desarrollar intervenciones preventivas o terapéuticas en poblaciones específicas.
columns_selected_with_gender = columns_selected + ['Sexo']
plot_gender_histogram(df[columns_selected_with_gender])
El análisis de los histogramas segmentados por sexo para los parámetros de la marcha sugiere que, si bien existen diferencias en las frecuencias entre hombres y mujeres, estas podrían estar influenciadas por una mayor representación de hombres en el estudio. La distribución de las métricas como Pace_walk, Velocidad_walk, Step Rate_walk, y Stride Length_walk no muestran variaciones significativas entre sexos que indiquen diferencias en los patrones de marcha, sino que las diferencias observadas en las frecuencias pueden ser un reflejo de la composición del grupo estudiado. Por lo tanto, cualquier interpretación de las diferencias en la marcha debe considerar la proporción de hombres y mujeres en la muestra para evitar sesgos.
plot_boxplot(runscribe_walk_df, title="Distribución de los Datos de Runscribe Marcha")
El gráfico de caja (boxplot) muestra la distribución de diversas métricas biomecánicas relacionadas con la marcha recopiladas por RunScribe. Características y patrones observados en los datos:
Variabilidad y Outliers: Existen varias métricas con valores atípicos (outliers) representados por puntos individuales fuera de los bigotes de las cajas. Estos outliers indican variabilidad significativa en los datos y pueden señalar sujetos con características biomecánicas inusuales o errores de medición.
Distribución Central: Para muchas de las métricas, la mediana se encuentra cerca del centro de la caja (distribución aproximadamente simétrica para esos datos). Otras, sin emabrgo, tienen distribuciones sesgadas, con la mediana desplazada hacia uno de los extremos de la caja. Esto puede ser indicativo de una tendencia en los datos hacia valores más altos o más bajos.
Dispersión y Rango Intercuartil: La longitud de las cajas (rango intercuartil, IQR) varía significativamente entre las diferentes métricas, indicando la variabilidad en la dispersión de los datos.
Valores Extremos: Algunas métricas tienen valores extremadamente altos, lo que podría estar relacionado con errores de medición, condiciones específicas de los participantes, o diferencias biomecánicas significativas.
Simetría y Asimetría:
plot_grid_boxplots(df, ['Pace_walk', 'Velocidad_walk', 'Step Rate_walk', 'Stride Length_walk','Contact Time_walk', 'Flight Time_walk'], cols_per_row=3, figsize_per_subplot=(6, 8))
plot_grid_boxplots(df, ['Power_walk', 'Shock_walk', 'Impact Gs_walk', 'Braking Gs_walk'], cols_per_row=2, figsize_per_subplot=(6, 4))
plot_grid_boxplots(df, ['Footstrike Type_walk', 'Max Pronation Velocity_walk', 'Total Force Rate_walk'], cols_per_row=3, figsize_per_subplot=(6, 6))
Los boxplots revelan varios outliers. Esto podría deberse a variaciones individuales extremas o errores en los sensores o algoritmos de RunScribe. Estos puntos extremos deberían ser investigados para asegurar que son datos fiables y no errores que podrían sesgar los análisis.
Tras el análisis de los parámetros de la marcha, se ha determinado priorizar aquellas columnas con menor cantidad de valores faltantes y relevancia biomécanica para un entendimiento más claro de la marcha. Estas métricas no solo ofrecen interpretaciones más directas sino que también son posiblemente más fiables debido a la integridad de sus datos. Aunque el enfoque primario se mantendrá en los hallazgos de la exploración clínica, estas variables de la marcha se conservarán para consideración en el modelado predictivo futuro. Su inclusión dependerá de la coherencia con los datos clínicos y la capacidad de mejorar la precisión del modelo.
Grupo 5 - runscribe_run_df - Datos Biomecánicos de Carrera¶runscribe_run_df.head()
| Pace_run | Velocidad_run | Step Rate_run | Stride Length_run | Contact Time_run | Flight Ratio_run | Power_run | Shock_run | Impact Gs_run | Braking Gs_run | Footstrike Type_run | Pronation Excursion_run | Max Pronation Velocity_run | Peak Vertical GRF_run | Contact Ratio_run | Flight Time_run | Stride Angle_run | Leg Spring Stiffness_run | Vertical Spring Stiffness_run | Vertical GRF Rate_run | Horizontal GRF Rate_run | Swing Force Rate_run | VO<sub>2</sub>_run | Total Force Rate_run | Time (Max Swing->FS)_run | Time (FS->MPV)_run | Time (MPV->MP)_run | Time (MP->TO)_run | Time (Min Swing->Max Swing)_run | Time (TO->Min Swing)_run | Medio Lateral Gs_run | Braking Gs (Amplitude)_run | Impact Gs (Amplitude)_run | Vertical Speed_run | Elevation Gain_run | Yaw Excursion_run | Swing Excursion_run | Yaw Excursion (MP->TO)_run | Yaw Excursion (Swing)_run | Max Stance Velocity (FS->MP)_run | Max Stance Velocity (MP->TO)_run | Step Length_run | Pronation Excursion (MP->TO)_run | Stance Excursion (FS->MP)_run | Stance Excursion (MP->TO)_run | Min Tilt_run | Max Tilt_run | Min Obliquity_run | Max Obliquity_run | Min Rotation_run | Max Rotation_run | Max Tilt Rate_run | Max Obliquity Rate_run | Max Rotation Rate_run | Vertical Oscillation_run | Braking Gs2_run | Impact Gs2_run | Medio Lateral Gs2_run | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2.748551 | 10 | 161.715795 | 2.039509 | 346.164557 | 6.593809 | 176.417722 | 11.974009 | 10.824272 | 5.054195 | 7.822785 | -13.776322 | 477.409271 | 2.289862 | 93.300849 | 24.468354 | 0.186361 | 7.51902 | 21.803643 | 28.354237 | 5.432238 | 1.294939 | 32.53777 | 88.931286 | 55.556962 | 16.734177 | 61.088608 | 268.341772 | 271.746835 | 94.531646 | 2.070516 | 3.357595 | 3.802215 | -1.929742 | 15.512712 | 7.703537 | 82.954129 | 2.11393 | 14.237558 | 604.251908 | 563.98648 | 1.019748 | -11.32853 | 15.311133 | 64.305786 | -13.403779 | 6.502495 | -7.475044 | 6.877642 | -9.27995 | 6.648964 | 1195.82189 | 455.488825 | 354.309651 | 9.463862 | 5.054195 | 10.824272 | NaN |
| 1 | 3.588932 | 13 | 172.110955 | 2.502031 | 242.541176 | 30.331614 | 283.164706 | 15.401995 | 14.331714 | 5.501979 | 10.082353 | -12.668764 | 686.949965 | 3.752896 | 69.573162 | 105.623529 | 2.512311 | 11.643407 | 23.714214 | 40.468636 | 6.976227 | 1.371845 | 40.873994 | 109.528792 | 105.376471 | 18.929412 | 37.129412 | 186.482353 | 269.882353 | 150.2 | 1.453265 | 5.445588 | 10.158088 | -2.136398 | 12.955882 | 7.324649 | 103.497258 | -3.406445 | 1.338612 | 886.819999 | 736.709414 | 1.251029 | 0.245774 | 9.668947 | 71.08696 | -19.167448 | 27.243976 | -76.367202 | 174.473553 | -6.524156 | 8.45474 | 1073.74018 | 549.242193 | 338.780492 | 7.520066 | 5.501979 | 14.331714 | NaN |
| 2 | 3.237176 | 12 | 161.586499 | 2.412864 | 312.8875 | 15.662497 | 295.075 | 12.238623 | 11.182911 | 4.905526 | 8.6625 | -5.597087 | 370.364379 | 2.753032 | 84.248189 | 58.0875 | 0.808101 | 7.467717 | 19.412686 | 31.394826 | 6.489825 | 1.383789 | 36.559321 | 98.867903 | 63.2125 | 20.5625 | 14.6125 | 277.7125 | 271.5125 | 120.3875 | 0.70904 | 3.246875 | 3.046094 | -2.040584 | 4.363636 | 4.281259 | 93.967785 | 3.72618 | 5.314272 | 608.752448 | 695.496367 | 1.206434 | 4.629309 | 13.068565 | 64.478919 | -4.481001 | 4.663599 | -4.560628 | 4.030698 | -8.582659 | 6.3752 | 287.748406 | 329.644999 | 238.683496 | 9.743993 | 4.905526 | 11.182911 | NaN |
| 3 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 4 | 2.771313 | 10 | 154.324844 | 2.156889 | 344.173333 | 11.758673 | 265.053333 | 9.712691 | 8.177761 | 5.183445 | 6.293333 | -14.81418 | 324.471029 | 2.529457 | 88.531048 | 44.28 | 0.601901 | 7.491232 | 17.637041 | 28.567287 | 5.482485 | 1.139027 | 30.812276 | 84.667871 | 21.48 | 29.693333 | 61.106667 | 253.373333 | 291.386667 | 110.96 | 2.631973 | 2.868333 | 4.126667 | -2.253852 | -0.015306 | 3.920633 | 95.010432 | -3.146471 | 2.148132 | 517.263999 | 606.617845 | 1.07844 | 0.896047 | 19.396257 | 71.162513 | -3.369122 | 2.998792 | -4.744334 | 3.508732 | -1.609183 | 1.855734 | 229.821938 | 219.938216 | 174.084158 | 10.567643 | 5.183445 | 8.177761 | NaN |
runscribe_run_df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 897 entries, 0 to 896 Data columns (total 58 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Pace_run 363 non-null object 1 Velocidad_run 363 non-null object 2 Step Rate_run 363 non-null object 3 Stride Length_run 362 non-null object 4 Contact Time_run 363 non-null object 5 Flight Ratio_run 363 non-null object 6 Power_run 363 non-null object 7 Shock_run 363 non-null object 8 Impact Gs_run 363 non-null object 9 Braking Gs_run 363 non-null object 10 Footstrike Type_run 363 non-null object 11 Pronation Excursion_run 363 non-null object 12 Max Pronation Velocity_run 363 non-null object 13 Peak Vertical GRF_run 363 non-null object 14 Contact Ratio_run 363 non-null object 15 Flight Time_run 363 non-null object 16 Stride Angle_run 362 non-null object 17 Leg Spring Stiffness_run 362 non-null object 18 Vertical Spring Stiffness_run 362 non-null object 19 Vertical GRF Rate_run 363 non-null object 20 Horizontal GRF Rate_run 362 non-null object 21 Swing Force Rate_run 362 non-null object 22 VO<sub>2</sub>_run 362 non-null object 23 Total Force Rate_run 362 non-null object 24 Time (Max Swing->FS)_run 363 non-null object 25 Time (FS->MPV)_run 363 non-null object 26 Time (MPV->MP)_run 363 non-null object 27 Time (MP->TO)_run 363 non-null object 28 Time (Min Swing->Max Swing)_run 363 non-null object 29 Time (TO->Min Swing)_run 363 non-null object 30 Medio Lateral Gs_run 363 non-null object 31 Braking Gs (Amplitude)_run 363 non-null object 32 Impact Gs (Amplitude)_run 363 non-null object 33 Vertical Speed_run 363 non-null object 34 Elevation Gain_run 289 non-null object 35 Yaw Excursion_run 363 non-null object 36 Swing Excursion_run 363 non-null object 37 Yaw Excursion (MP->TO)_run 363 non-null object 38 Yaw Excursion (Swing)_run 363 non-null object 39 Max Stance Velocity (FS->MP)_run 359 non-null object 40 Max Stance Velocity (MP->TO)_run 359 non-null object 41 Step Length_run 362 non-null object 42 Pronation Excursion (MP->TO)_run 363 non-null object 43 Stance Excursion (FS->MP)_run 363 non-null object 44 Stance Excursion (MP->TO)_run 363 non-null object 45 Min Tilt_run 301 non-null object 46 Max Tilt_run 301 non-null object 47 Min Obliquity_run 301 non-null object 48 Max Obliquity_run 301 non-null object 49 Min Rotation_run 301 non-null object 50 Max Rotation_run 301 non-null object 51 Max Tilt Rate_run 301 non-null object 52 Max Obliquity Rate_run 301 non-null object 53 Max Rotation Rate_run 301 non-null object 54 Vertical Oscillation_run 301 non-null object 55 Braking Gs2_run 363 non-null object 56 Impact Gs2_run 363 non-null object 57 Medio Lateral Gs2_run 227 non-null object dtypes: object(58) memory usage: 406.6+ KB
# runscribe_run_df.isna().sum()
missing_percentage = calculate_missing_percentage(runscribe_run_df, runscribe_run_df.columns, visualize=True, figsize=(12,6))
Porcentaje de datos faltantes por columna: Medio Lateral Gs2_run: 74.69% Elevation Gain_run: 67.78% Max Obliquity_run: 66.44% Vertical Oscillation_run: 66.44% Max Rotation Rate_run: 66.44% Max Obliquity Rate_run: 66.44% Max Tilt Rate_run: 66.44% Max Rotation_run: 66.44% Min Rotation_run: 66.44% Min Obliquity_run: 66.44% Max Tilt_run: 66.44% Min Tilt_run: 66.44% Max Stance Velocity (FS->MP)_run: 59.98% Max Stance Velocity (MP->TO)_run: 59.98% Total Force Rate_run: 59.64% VO<sub>2</sub>_run: 59.64% Leg Spring Stiffness_run: 59.64% Step Length_run: 59.64% Horizontal GRF Rate_run: 59.64% Swing Force Rate_run: 59.64% Stride Angle_run: 59.64% Vertical Spring Stiffness_run: 59.64% Stride Length_run: 59.64% Stance Excursion (FS->MP)_run: 59.53% Pronation Excursion (MP->TO)_run: 59.53% Vertical Speed_run: 59.53% Stance Excursion (MP->TO)_run: 59.53% Braking Gs2_run: 59.53% Yaw Excursion (Swing)_run: 59.53% Yaw Excursion (MP->TO)_run: 59.53% Swing Excursion_run: 59.53% Yaw Excursion_run: 59.53% Impact Gs2_run: 59.53% Pace_run: 59.53% Impact Gs (Amplitude)_run: 59.53% Braking Gs (Amplitude)_run: 59.53% Step Rate_run: 59.53% Contact Time_run: 59.53% Flight Ratio_run: 59.53% Power_run: 59.53% Shock_run: 59.53% Impact Gs_run: 59.53% Braking Gs_run: 59.53% Footstrike Type_run: 59.53% Pronation Excursion_run: 59.53% Max Pronation Velocity_run: 59.53% Peak Vertical GRF_run: 59.53% Contact Ratio_run: 59.53% Flight Time_run: 59.53% Vertical GRF Rate_run: 59.53% Time (Max Swing->FS)_run: 59.53% Time (FS->MPV)_run: 59.53% Time (MPV->MP)_run: 59.53% Time (MP->TO)_run: 59.53% Time (Min Swing->Max Swing)_run: 59.53% Velocidad_run: 59.53% Medio Lateral Gs_run: 59.53% Time (TO->Min Swing)_run: 59.53%
# Eliminar espacios en nombres de columnas
runscribe_columns = [col.strip() for col in runscribe_run_df.columns]
df.columns = df.columns.str.strip()
# Convertir columnas a numérico
for column in runscribe_columns:
if column in df.columns:
df[column] = pd.to_numeric(df[column], errors='coerce')
# Seleccionamos posibles variables de interés
columns_selected = ['Pace_run', 'Velocidad_run', 'Step Rate_run', 'Stride Length_run', 'Contact Time_run', 'Flight Time_run', 'Power_run', 'Shock_run', 'Impact Gs_run', 'Braking Gs_run', 'Footstrike Type_run', 'Max Pronation Velocity_run', 'Total Force Rate_run']
df[columns_selected].describe()
| Pace_run | Velocidad_run | Step Rate_run | Stride Length_run | Contact Time_run | Flight Time_run | Power_run | Shock_run | Impact Gs_run | Braking Gs_run | Footstrike Type_run | Max Pronation Velocity_run | Total Force Rate_run | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| count | 363.000000 | 363.000000 | 363.000000 | 362.000000 | 363.000000 | 363.000000 | 363.000000 | 363.000000 | 363.000000 | 363.000000 | 363.000000 | 363.000000 | 362.000000 |
| mean | 3.211574 | 11.581267 | 163.899869 | 2.346897 | 296.089530 | 78.923327 | 230.220579 | 9.829611 | 7.442441 | 5.964861 | 8.540349 | 532.804441 | 71.614471 |
| std | 0.560853 | 1.799595 | 8.189391 | 0.391229 | 62.658019 | 69.243761 | 75.506685 | 2.786356 | 2.576046 | 2.216262 | 3.457411 | 260.300110 | 21.221794 |
| min | 1.630400 | 6.000000 | 145.378400 | 1.234801 | 201.884615 | -664.675676 | 0.000000 | 4.637865 | 2.694635 | 2.329115 | 1.000000 | -1620.717521 | 41.355990 |
| 25% | 2.765481 | 10.000000 | 157.558761 | 2.092373 | 266.604651 | 51.785531 | 192.360585 | 7.682659 | 5.563838 | 4.378710 | 6.192308 | 366.033171 | 54.309113 |
| 50% | 3.048197 | 11.000000 | 163.826859 | 2.264296 | 292.539474 | 75.506667 | 229.125000 | 9.504847 | 7.137060 | 5.542137 | 7.795031 | 511.426601 | 64.283952 |
| 75% | 3.582811 | 13.000000 | 169.494311 | 2.553511 | 319.373333 | 101.641026 | 265.051667 | 11.507056 | 8.874024 | 7.239849 | 10.719613 | 668.113118 | 87.538966 |
| max | 6.591568 | 20.000000 | 186.580144 | 4.708409 | 1228.959459 | 409.259615 | 823.000000 | 18.480825 | 15.747820 | 13.859452 | 16.000000 | 1410.131385 | 134.543444 |
El análisis muestra una población con un rango moderado de velocidad y paso, y variabilidad en la técnica de carrera. Los tiempos de contacto bajos y variados tiempos de vuelo indican eficiencia y diversidad en la propulsión. Altos valores de potencia y shock reflejan corredores fuertes y resistentes, aunque el impacto significativo sugiere un riesgo de lesión variable. Las técnicas de pisada son variadas, y la fuerza generada durante la carrera difiere ampliamente. Se seleccionarán variables biomecánicas clave con datos completos para el modelado futuro, enfocándonos en la relevancia clínica para la prevención y manejo de lesiones.
plot_boxplot(runscribe_run_df, title="Distribución de los Datos de Runscribe Carrera")
plot_grid_boxplots(df, ['Pace_run', 'Velocidad_run', 'Step Rate_run', 'Stride Length_run','Contact Time_run', 'Flight Time_run'], cols_per_row=3, figsize_per_subplot=(6, 8))
plot_grid_boxplots(df, ['Power_run', 'Shock_run', 'Impact Gs_run', 'Braking Gs_run'], cols_per_row=2, figsize_per_subplot=(6, 4))
plot_grid_boxplots(df, ['Footstrike Type_run', 'Max Pronation Velocity_run', 'Total Force Rate_run'], cols_per_row=3, figsize_per_subplot=(6, 6))
corr_matrix = df[columns_selected].corr()
plot_heatmap(corr_matrix=corr_matrix, figsize=(10, 8), cmap='GnBu', title='', annot=True)
La matriz de correlación para parámetros de carrera indica varias relaciones significativas:
Pace_run y Stride Length_run sugiere que una mayor longitud de zancada está fuertemente asociada con un ritmo más rápido. Es probable que corredores con zancadas más largas sean capaces de cubrir más distancia en menos tiempo.Pace_run y Velocidad_run es igualmente alta (0.90), lo cual es esperado ya que el ritmo es una función directa de la velocidad.Braking Gs_run y Impact Gs_run (0.80), lo que indica que el impacto al aterrizar y las fuerzas de frenado están interrelacionadas. Esto podría implicar que un aterrizaje con alto impacto conlleva una desaceleración considerable, lo que puede ser relevante para la prevención de lesiones.Max Pronation Velocity_run muestra una correlación moderada con Total Force Rate_run (0.44), lo que podría indicar que una pronación más rápida se asocia con un incremento en la tasa de fuerza total aplicada durante la carrera.Contact Time_run y Flight Time_run (-0.73) sugiere que a medida que disminuye el tiempo de contacto con el suelo, el tiempo de vuelo aumenta, lo cual es típico en corredores más rápidos y eficientes.Estos vínculos revelan patrones que podrían ser cruciales para mejorar el rendimiento en la carrera y para desarrollar estrategias de entrenamiento personalizadas. Además, pueden ofrecer insights para el diseño de calzado deportivo y para investigar más a fondo la relación entre la técnica de carrera y el riesgo de lesiones.
columns_selected_with_gender = columns_selected + ['Sexo']
plot_gender_histogram(df[columns_selected_with_gender])
Las gráficas muestran la distribución de diferentes métricas biomecánicas durante la carrera para hombres y mujeres. Observando las diferencias entre géneros, podemos inferir que:
Pace_run) y la velocidad (Velocidad_run) presenta diferencias notables, con los hombres tendiendo a mayores velocidades y ritmos más rápidos en comparación con las mujeres. Esto es coherente con las diferencias fisiológicas y de rendimiento entre géneros en actividades de resistencia.Stride Length_run) y la tasa o frecuencia de paso (Step Rate_run) también varían entre géneros, con una distribución que sugiere que los hombres tienen zancadas más largas y las mujeres tienen tasas de paso ligeramente más altas.Contact Time_run) y el tiempo de vuelo (Flight Time_run), las mujeres muestran una mayor variabilidad en el tiempo de vuelo, lo que puede indicar diferencias en la técnica de carrera o en la absorción y generación de fuerza durante el ciclo de la zancada.Power_run), el choque (Shock_run), el impacto (Impact Gs_run) y las fuerzas de frenado (Braking Gs_run) tienden a ser mayores en los hombres, lo que podría reflejar una combinación de masa corporal más elevada y un estilo de carrera más agresivo, lo que lleva a un mayor estrés en cada paso.Footstrike Type_run) sugiere que hay diferencias en la técnica de carrera entre hombres y mujeres, posiblemente debido a la anatomía o preferencias individuales.Max Pronation Velocity_run) y la tasa de fuerza total (Total Force Rate_run) muestran diferencias sustanciales entre géneros, lo que podría estar relacionado con la biomecánica y la estructura ósea diferenciada.Este análisis descriptivo ofrece una base para estudios más profundos sobre cómo estas diferencias pueden afectar la eficiencia, la economía de carrera y el riesgo de lesiones, y podría ser útil para personalizar entrenamientos y recomendaciones de prevención de lesiones para hombres y mujeres.
El análisis descriptivo de los parámetros de carrera sugiere una muestra heterogénea en términos de rendimiento y técnica, con una marcada variabilidad en las métricas clave como la velocidad, la longitud de zancada y los tiempos de contacto y vuelo. La media de datos faltantes ronda entre 534 y 596 para este grupo de variables, lo que implica una selección crítica de características para futuros modelos predictivos. Dado que el total de registros es cercano a 900, al utilizar únicamente los sujetos con mediciones completas se reduciría la muestra a menos de la mitad. Esto sugiere que los modelos resultantes estarán enfocados específicamente en atletas o individuos con datos de rendimiento de carrera, diferenciándolos del resto de la población estudiada. Tal enfoque permitirá una interpretación más precisa de la influencia de los parámetros de carrera en la salud y rendimiento deportivo, aunque limitará la generalización a toda la población de estudio.
Grupo 6 - ib_resport2_df - Tests Clínicos¶ib_resport2_df.head()
| M1 Hipermovil | TF Normal | TT Normal | AP Adducto | Thomas Psoas | Thomas RF | Thomas TFL | Ober | AP_Varo | AP_Neutro | AP_Valgo | RP_Varo | RP_Neutro | RP_Valgo | Arco normal | Arco Aplanado | Arco elevado | PIe cavo posterior | PIe cavo anterior | M1 DFx | M5 Hipermovil | M5 Dfx | Arco transverso disminuido | M1 PFx | Cavo Col medial | M5 PFx | Cavo col Lateral | Arco transverso aumentado | MTF1 Normal | HLF | HL | HR | HAV | Index Minus | Index plus-minus | Index Plus | Col lat corta | Col lat larga | Pie griego | Pie cuadrado | Pie egipcio | TFI | TFE | TTI | TTE | AP Normal ABD-AD | AP Abducto | Pierna Corta | Rot Ext Cadera Izquierda | Rot Ext Cadera Derecha | Rot Int Cadera Derecha | Rot Int Cadera Izquierda | Dismetría | Ober Friccion | Popliteo | POPLITEO CL Neutra | PNCA AP Varo | PNCA AP Neutro | PNCA AP Valgo | PNCA RP Varo | PNCA RP Neutro | PNCA RP Valgo | T_Hintermann | Jack Normal | Jack R aumentada | Jack No reconstruye | Jack R disminuida | Pron max Normal | Pronación no disponible | 2Heel Raise | Heel Raise | FPI_1_I | FPI_1_D | FPI_2_I | FPI_2_D | FPI_3_I | FPI_3_D | FPI_4_I | FPI_4_D | FPI_5_I | FPI_5_D | FPI_6_I | FPI_6_D | FPI_Total_I | FPI_Total_D | Tibia vara proximal | Tibia Vara distal | Rotula divergente | Rotula descendida | Rotula convergente | Rotula ascencida | Valgo-Varo_I | Genu valgo | Genu normal | Genu varo | Genu recurvatum | Genu neutro | Genu flexum | Pelvis AV | Rot_Pelvis_Izda | EIAS_Down_Izda | Iliaco Izquierdo Normal | Iliaco Dcho Normal | Iliaco Izquierdo AV | Iliaco Izquierdo RV | Iliaco Dcho AV | Iliaco Dcho RV | EIAS_Up_Izda | EIAS_Up_Dcha | Hiperlordosis cervical | Hipercifosis torácica | Hiperlordosis lumbar | Antepulsión torax | Antepulsión pelvis | Retropulsion Pelvis | Rectificación lumbar | Retropulsion Torax | Dorso plano | Rectificación Cervical | GAZE Elevada | GAZE Disminuida | Retrognatismo | Prognatismo | Inclinación izquierda cabeza | Escoliosis Cervical Izquierda | Escoliosis Cervical Derecha | Escoliosis Dorsal Derecha | Escoliosis Dorsal Izquierda | Escoliosis Lumbar Izquierda | Escoliosis Lumbar Derecha | Escoliosis Rotación toracica derecha | Escoliosis Rotación toracica izquierda | Rotación izquierda cabeza | Rotación derecha cabeza | Rotación derecha torax | Rotación izquierda torax | Antepulsion Cabeza | Inclinación derecha cabeza | Lateropulsión cabeza derecha | Lateropulsión cabeza izquierda | Lateropulsión torax izquierda | Lateropulsión pelvis derecha | Lateropulsión pelvis izquierda | EIPS_Down_Izda | EIPS_Up_I | EIPS_Up_Dcha | EIPS_Down_Dcha | EIAS_Down_Dcha | Lateropulsión torax derecha | Descenso hombro izquierdo | Elevación Hombro Izquierdo | Elevación hombro derecho | Descenso hombro derecho | Retropulsión Cabeza | Lunge | Impresión Diagnóstica de función | Pruebas complementarias | Calzado | Escaneo 0% | Escaneo 25% | Escaneo 50% | Escaneo 75% | Escaneo 100% | TPU | TPU Run | PA12 Anterocapital | PA12 Retro | Elementos en taller | Fisioterapia y ejercicios | Pelvis Rot Dcha | Videoconferencia con informe | Llamar cuando lleguen plantillas | Lunge Izq | Lunge Dcho | Telemetría | Solo informe | Elementos en Diseño | entrega y revisiones | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | No | No | No | No | Negativo | Negativo | Negativo | Negativo | Bilateral | No | No | No | Bilateral | No | No | No | Bilateral | No | Bilateral | No | No | No | No | No | No | No | No | No | Bilateral | No | No | No | Bilateral | Bilateral | No | No | No | No | No | No | Bilateral | No | Bilateral | No | Bilateral | Bilateral | No | No | NaN | NaN | NaN | NaN | NaN | Negativo | Negativo | NaN | No | Bilateral | No | No | Bilateral | No | Izquierda | Bilateral | No | No | No | Bilateral | No | No | No | 0 | 0 | 0 | 0 | 0 | 0 | -1 | -1 | 0 | 0 | 0 | 0 | -1 | -1 | No | No | No | No | No | No | NaN | No | Bilateral | No | Bilateral | No | No | NaN | NaN | NaN | Si | Si | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Derecho | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 1 | Bilateral | Bilateral | Bilateral | No | Negativo | Bilateral | Bilateral | Negativo | No | Bilateral | No | No | Bilateral | No | Bilateral | No | No | No | Bilateral | No | No | No | No | Bilateral | No | No | Derecha | Derecha | No | No | Bilateral | No | No | Bilateral | No | No | No | No | No | No | Bilateral | No | No | No | No | Bilateral | No | No | NaN | NaN | NaN | NaN | NaN | Negativo | Negativo | NaN | No | Bilateral | No | No | Bilateral | No | No | No | Bilateral | No | No | Bilateral | No | No | No | 2 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 7 | 7 | No | No | No | No | No | No | NaN | Bilateral | No | No | No | Bilateral | No | NaN | NaN | NaN | Si | Si | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Bilateral | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 3 | Bilateral | Bilateral | No | Bilateral | Negativo | Bilateral | Negativo | Negativo | No | Bilateral | No | No | Bilateral | No | Bilateral | No | No | No | Bilateral | Bilateral | No | No | No | No | No | No | Bilateral | No | Bilateral | No | No | No | No | Bilateral | No | No | No | No | No | No | Bilateral | No | No | No | Bilateral | No | No | Derecha | NaN | NaN | NaN | NaN | NaN | Negativo | Negativo | NaN | No | Bilateral | No | No | No | Bilateral | No | Bilateral | No | No | No | Bilateral | No | No | No | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 1 | 1 | 7 | 7 | No | No | No | No | No | No | NaN | No | Bilateral | No | Bilateral | No | No | NaN | NaN | Si | Si | NaN | NaN | NaN | Si | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Si | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Negativo | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
| 4 | No | Bilateral | No | No | Negativo | Bilateral | Derecho | Negativo | No | Bilateral | No | No | Bilateral | No | No | No | Bilateral | No | Bilateral | No | No | No | No | Bilateral | No | No | Bilateral | Bilateral | Bilateral | No | No | No | No | Bilateral | No | No | No | No | No | No | Bilateral | No | No | No | Bilateral | Bilateral | No | Derecha | NaN | NaN | NaN | NaN | NaN | Negativo | Bilateral | NaN | No | Bilateral | No | No | Bilateral | No | No | No | No | No | Bilateral | Bilateral | No | No | No | 1 | -1 | 0 | -1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 3 | 0 | Derecha | No | No | No | No | No | NaN | No | No | Bilateral | No | Bilateral | No | NaN | NaN | NaN | NaN | NaN | NaN | Si | NaN | Si | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Bilateral | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
missing_values = ib_resport2_df.isna().sum()
more_than_800 = missing_values[missing_values > 800]
between_600_and_800 = missing_values[(missing_values > 600) & (missing_values <= 800)]
between_400_and_600 = missing_values[(missing_values > 400) & (missing_values <= 600)]
less_than_400 = missing_values[missing_values < 400]
print("Columnas con más de 800 valores faltantes:", more_than_800.index.tolist())
Columnas con más de 800 valores faltantes: ['Rot Ext Cadera Izquierda', 'Rot Ext Cadera Derecha', 'Rot Int Cadera Derecha', 'Rot Int Cadera Izquierda', 'Dismetría', 'POPLITEO CL Neutra', 'Valgo-Varo_I', 'Pelvis AV', 'Rot_Pelvis_Izda', 'EIAS_Down_Izda', 'Hiperlordosis cervical', 'Hipercifosis torácica', 'Hiperlordosis lumbar', 'Antepulsión torax', 'Antepulsión pelvis', 'Retropulsion Pelvis', 'Rectificación lumbar', 'Retropulsion Torax', 'Dorso plano', 'Rectificación Cervical', 'GAZE Elevada', 'GAZE Disminuida', 'Retrognatismo', 'Prognatismo', 'Inclinación izquierda cabeza', 'Escoliosis Cervical Izquierda', 'Escoliosis Cervical Derecha', 'Escoliosis Dorsal Derecha', 'Escoliosis Dorsal Izquierda', 'Escoliosis Lumbar Izquierda', 'Escoliosis Lumbar Derecha', 'Escoliosis Rotación toracica derecha', 'Escoliosis Rotación toracica izquierda', 'Rotación izquierda cabeza', 'Rotación derecha cabeza', 'Rotación derecha torax', 'Rotación izquierda torax', 'Antepulsion Cabeza', 'Inclinación derecha cabeza', 'Lateropulsión cabeza derecha', 'Lateropulsión cabeza izquierda', 'Lateropulsión torax izquierda', 'Lateropulsión pelvis derecha', 'Lateropulsión pelvis izquierda', 'EIPS_Down_Izda', 'EIPS_Down_Dcha', 'EIAS_Down_Dcha', 'Lateropulsión torax derecha', 'Descenso hombro izquierdo', 'Elevación Hombro Izquierdo', 'Elevación hombro derecho', 'Descenso hombro derecho', 'Retropulsión Cabeza', 'Impresión Diagnóstica de función', 'Pruebas complementarias', 'Escaneo 25%', 'Escaneo 50%', 'Escaneo 75%', 'Escaneo 100%', 'TPU', 'TPU Run', 'PA12 Anterocapital', 'PA12 Retro', 'Pelvis Rot Dcha', 'Videoconferencia con informe', 'Telemetría', 'Solo informe', 'entrega y revisiones']
print("Columnas con entre 600 y 800 valores faltantes:", between_600_and_800.index.tolist())
Columnas con entre 600 y 800 valores faltantes: ['Iliaco Izquierdo AV', 'Iliaco Izquierdo RV', 'Iliaco Dcho AV', 'Iliaco Dcho RV', 'EIAS_Up_Izda', 'EIAS_Up_Dcha', 'EIPS_Up_I', 'EIPS_Up_Dcha', 'Calzado', 'Escaneo 0%', 'Elementos en taller', 'Fisioterapia y ejercicios', 'Llamar cuando lleguen plantillas', 'Elementos en Diseño']
print("Columnas con entre 400 y 600 valores faltantes:", between_400_and_600.index.tolist())
Columnas con entre 400 y 600 valores faltantes: ['Iliaco Izquierdo Normal', 'Iliaco Dcho Normal', 'Lunge Izq', 'Lunge Dcho']
print("Columnas con menos de 400 valores faltantes:", less_than_400.index.tolist())
Columnas con menos de 400 valores faltantes: ['M1 Hipermovil', 'TF Normal', 'TT Normal', 'AP Adducto', 'Thomas Psoas', 'Thomas RF', 'Thomas TFL', 'Ober', 'AP_Varo', 'AP_Neutro', 'AP_Valgo', 'RP_Varo', 'RP_Neutro', 'RP_Valgo', 'Arco normal', 'Arco Aplanado', 'Arco elevado', 'PIe cavo posterior', 'PIe cavo anterior', 'M1 DFx', 'M5 Hipermovil', 'M5 Dfx', 'Arco transverso disminuido', 'M1 PFx', 'Cavo Col medial', 'M5 PFx', 'Cavo col Lateral', 'Arco transverso aumentado', 'MTF1 Normal', 'HLF', 'HL', 'HR', 'HAV', 'Index Minus', 'Index plus-minus', 'Index Plus', 'Col lat corta', 'Col lat larga', 'Pie griego', 'Pie cuadrado', 'Pie egipcio', 'TFI', 'TFE', 'TTI', 'TTE', 'AP Normal ABD-AD', 'AP Abducto', 'Pierna Corta', 'Ober Friccion', 'Popliteo', 'PNCA AP Varo', 'PNCA AP Neutro', 'PNCA AP Valgo', 'PNCA RP Varo', 'PNCA RP Neutro', 'PNCA RP Valgo', 'T_Hintermann', 'Jack Normal', 'Jack R aumentada', 'Jack No reconstruye', 'Jack R disminuida', 'Pron max Normal', 'Pronación no disponible', '2Heel Raise', 'Heel Raise', 'FPI_1_I', 'FPI_1_D', 'FPI_2_I', 'FPI_2_D', 'FPI_3_I', 'FPI_3_D', 'FPI_4_I', 'FPI_4_D', 'FPI_5_I', 'FPI_5_D', 'FPI_6_I', 'FPI_6_D', 'FPI_Total_I', 'FPI_Total_D', 'Tibia vara proximal', 'Tibia Vara distal', 'Rotula divergente', 'Rotula descendida', 'Rotula convergente', 'Rotula ascencida', 'Genu valgo', 'Genu normal', 'Genu varo', 'Genu recurvatum', 'Genu neutro', 'Genu flexum', 'Lunge']
# print(less_than_400) # La mayoría de las columnas tiene 35 valores faltantes, alguna con 36
missing_percentage = calculate_missing_percentage(ib_resport2_df, ib_resport2_df.columns, visualize=False, figsize=(12,6))
Porcentaje de datos faltantes por columna: Rotación derecha cabeza: 100.00% Escoliosis Cervical Derecha: 100.00% Inclinación derecha cabeza: 100.00% Lateropulsión cabeza derecha: 100.00% Prognatismo: 100.00% Retrognatismo: 100.00% Lateropulsión pelvis derecha: 100.00% GAZE Elevada: 100.00% Escoliosis Cervical Izquierda: 99.89% GAZE Disminuida: 99.89% Escaneo 75%: 99.89% Inclinación izquierda cabeza: 99.89% POPLITEO CL Neutra: 99.89% Lateropulsión cabeza izquierda: 99.89% Lateropulsión pelvis izquierda: 99.67% Rotación izquierda cabeza: 99.67% Elevación Hombro Izquierdo: 99.55% Retropulsión Cabeza: 99.55% EIPS_Down_Izda: 99.33% Escaneo 100%: 99.33% Rectificación Cervical: 99.33% Retropulsion Pelvis: 99.33% Descenso hombro izquierdo: 99.33% Escoliosis Dorsal Izquierda: 99.22% Rot Int Cadera Derecha: 99.11% Rot Ext Cadera Derecha: 99.11% Rotación izquierda torax: 99.11% Rot Int Cadera Izquierda: 99.11% Escoliosis Lumbar Izquierda: 99.11% Antepulsión torax: 99.11% Pelvis AV: 99.11% Lateropulsión torax derecha: 99.00% Elevación hombro derecho: 98.77% EIAS_Down_Dcha: 98.66% Valgo-Varo_I: 98.55% Hiperlordosis cervical: 98.44% Rot Ext Cadera Izquierda: 98.44% Rotación derecha torax: 98.33% Escaneo 50%: 98.33% TPU Run: 98.22% Escoliosis Rotación toracica izquierda: 97.88% Hipercifosis torácica: 97.88% Antepulsión pelvis: 97.55% Videoconferencia con informe: 97.44% Escoliosis Rotación toracica derecha: 97.44% Escoliosis Lumbar Derecha: 97.10% entrega y revisiones: 96.99% Descenso hombro derecho: 96.99% Antepulsion Cabeza: 96.99% Retropulsion Torax: 96.88% Dorso plano: 96.66% Escoliosis Dorsal Derecha: 96.43% Pelvis Rot Dcha: 96.32% EIPS_Down_Dcha: 96.32% Lateropulsión torax izquierda: 95.88% Escaneo 25%: 95.32% Dismetría: 94.31% EIAS_Down_Izda: 94.09% Pruebas complementarias: 93.53% Hiperlordosis lumbar: 93.42% PA12 Retro: 93.09% Solo informe: 92.75% Rot_Pelvis_Izda: 92.42% Telemetría: 91.53% Rectificación lumbar: 91.30% TPU: 91.08% PA12 Anterocapital: 90.52% Impresión Diagnóstica de función: 90.08% EIAS_Up_Izda: 88.07% Fisioterapia y ejercicios: 87.85% EIPS_Up_Dcha: 87.51% Iliaco Izquierdo AV: 86.18% Elementos en Diseño: 85.84% Calzado: 85.06% Iliaco Dcho AV: 84.73% EIPS_Up_I: 84.62% Llamar cuando lleguen plantillas: 83.84% Escaneo 0%: 82.39% Elementos en taller: 81.16% EIAS_Up_Dcha: 76.37% Iliaco Dcho RV: 75.70% Iliaco Izquierdo RV: 74.92% Lunge Izq: 66.78% Lunge Dcho: 66.44% Iliaco Dcho Normal: 50.95% Iliaco Izquierdo Normal: 50.17% FPI_5_I: 4.01% FPI_6_D: 4.01% FPI_3_I: 4.01% FPI_1_I: 4.01% Genu flexum: 3.90% Genu recurvatum: 3.90% Lunge: 3.90% Genu neutro: 3.90% M1 Hipermovil: 3.90% Genu varo: 3.90% M5 Dfx: 3.90% M1 PFx: 3.90% Cavo Col medial: 3.90% M5 PFx: 3.90% Cavo col Lateral: 3.90% Arco transverso aumentado: 3.90% MTF1 Normal: 3.90% HLF: 3.90% HL: 3.90% HR: 3.90% HAV: 3.90% Index Minus: 3.90% Index plus-minus: 3.90% Index Plus: 3.90% Col lat corta: 3.90% Col lat larga: 3.90% Pie griego: 3.90% Pie cuadrado: 3.90% Arco transverso disminuido: 3.90% M5 Hipermovil: 3.90% TFI: 3.90% M1 DFx: 3.90% TT Normal: 3.90% AP Adducto: 3.90% Thomas Psoas: 3.90% Thomas RF: 3.90% Thomas TFL: 3.90% Ober: 3.90% AP_Varo: 3.90% AP_Neutro: 3.90% AP_Valgo: 3.90% RP_Varo: 3.90% RP_Neutro: 3.90% RP_Valgo: 3.90% Arco normal: 3.90% Arco Aplanado: 3.90% Arco elevado: 3.90% PIe cavo posterior: 3.90% PIe cavo anterior: 3.90% Pie egipcio: 3.90% TFE: 3.90% Genu normal: 3.90% 2Heel Raise: 3.90% FPI_1_D: 3.90% FPI_2_I: 3.90% FPI_2_D: 3.90% FPI_3_D: 3.90% FPI_4_I: 3.90% FPI_4_D: 3.90% FPI_5_D: 3.90% FPI_6_I: 3.90% FPI_Total_I: 3.90% FPI_Total_D: 3.90% Tibia vara proximal: 3.90% Tibia Vara distal: 3.90% Rotula divergente: 3.90% Rotula descendida: 3.90% TF Normal: 3.90% Rotula ascencida: 3.90% Genu valgo: 3.90% Heel Raise: 3.90% Pronación no disponible: 3.90% TTI: 3.90% Pron max Normal: 3.90% TTE: 3.90% AP Normal ABD-AD: 3.90% AP Abducto: 3.90% Pierna Corta: 3.90% Ober Friccion: 3.90% Popliteo: 3.90% PNCA AP Varo: 3.90% PNCA AP Neutro: 3.90% PNCA AP Valgo: 3.90% PNCA RP Varo: 3.90% PNCA RP Neutro: 3.90% PNCA RP Valgo: 3.90% T_Hintermann: 3.90% Jack Normal: 3.90% Jack R aumentada: 3.90% Jack No reconstruye: 3.90% Jack R disminuida: 3.90% Rotula convergente: 3.90%
column_names = ['TF Normal', 'TT Normal', 'Thomas Psoas', 'Thomas RF', 'Thomas TFL', 'Ober']
plot_categorical_columns(ib_resport2_df, column_names, 3, ylabel='')
columns = ['TF Normal', 'TT Normal', 'Thomas Psoas', 'Thomas RF', 'Thomas TFL', 'Ober', 'TFI', 'TFE', 'TTI', 'TTE']
df[columns].describe()
| TF Normal | TT Normal | Thomas Psoas | Thomas RF | Thomas TFL | Ober | TFI | TFE | TTI | TTE | |
|---|---|---|---|---|---|---|---|---|---|---|
| count | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 | 862 |
| unique | 4 | 4 | 4 | 4 | 4 | 3 | 4 | 4 | 4 | 4 |
| top | Bilateral | Bilateral | Negativo | Negativo | Negativo | Negativo | No | No | No | No |
| freq | 422 | 633 | 716 | 598 | 604 | 838 | 692 | 560 | 847 | 643 |
La exploración de las variables clínicas relativas a la torsión femoral y tibial y los test de cadera revela una predominancia de resultados 'Negativo', indicando una frecuencia más baja de patologías en esta muestra.
Además, para TF Normal y TT Normal, la categoría 'Bilateral' es la más común, lo que sugiere que la mayoría de los individuos no presentan anormalidades significativas en torsión femoral ni tibial. Las columnas TFI y TFE muestran una alta frecuencia de 'No', sugiriendo la ausencia de torsión femoral interna o externa en la mayoría de los casos.
Estos hallazgos sugieren que, dentro de esta población, las condiciones patológicas evaluadas no son prevalentes, lo que podría indicar una población en general sana en términos de los parámetros clínicos evaluados.
plot_categorical_columns(ib_resport2_df, ['TFI', 'TFE', 'TTI', 'TTE'], 2, ylabel='')
Queremos verificar si los casos positivos en una columna excluyen los casos positivos en otra. Nos basamos en que 'No' en TF Normal debería corresponder a un valor positivo en TFI o TFE:
# Análisis bivariado
check_exclusivity(df, 'TF Normal', 'TFI', 'TFE')
Resumen de exclusividad entre TF Normal, TFI y TFE: False 897 Name: count, dtype: int64
stacked_barplot_excluding_no(
data=df,
columns=['TFI', 'TFE', 'TTI', 'TTE'],
hue='Sexo',
title='Distribución por Sexo Excluyendo No',
nrows=2,
ncols=2,
figsize=(15, 10)
)
# Calcula el número total de hombres y mujeres en la muestra
total_hombres = df[df['Sexo'] == 'Hombre'].shape[0]
total_mujeres = df[df['Sexo'] == 'Mujer'].shape[0]
# Calcula la proporción de TFI para hombres y mujeres
proporcion_TFI_hombres = (df[(df['Sexo'] == 'Hombre') & (df['TFI'] != 'No')].shape[0] / total_hombres) if total_hombres != 0 else 0
proporcion_TFI_mujeres = (df[(df['Sexo'] == 'Mujer') & (df['TFI'] != 'No')].shape[0] / total_mujeres) if total_mujeres != 0 else 0
# Crea una tabla de contingencia para la prueba de chi-cuadrado
tabla_contingencia = pd.crosstab(df['Sexo'], df['TFI'])
tabla_contingencia = tabla_contingencia[['Izquierda', 'Derecha', 'Bilateral']]
# Realiza la prueba de chi-cuadrado
chi2, p, dof, ex = chi2_contingency(tabla_contingencia, correction=False)
# Verifica si las diferencias son significativas
print("Chi-cuadrado:", chi2)
print("p-valor:", p)
# Si p < 0.05, las diferencias son estadísticamente significativas
Chi-cuadrado: 7.395955429899396 p-valor: 0.02477357507752944
Las gráficas muestran la distribución por sexo de las categorías TFI, TFE, TTI y TTE, excluyendo los casos donde la respuesta es 'No'. Parece que hay una mayor frecuencia de hallazgos en el grupo masculino en comparación con el femenino para todas las categorías. Además, la categoría 'TTE' muestra una diferencia significativa entre los sexos, con una predominancia en hombres. Las otras categorías también presentan una inclinación hacia el grupo masculino, pero la diferencia es menos pronunciada. Esto podría indicar que, en esta muestra, las condiciones que se están evaluando son más prevalentes o están más frecuentemente documentadas en hombres.
plot_categorical_columns(ib_resport2_df, ['AP Adducto', 'AP_Varo', 'AP_Neutro', 'AP_Valgo'], 2, ylabel='')
plot_categorical_columns(ib_resport2_df, ['RP_Varo', 'RP_Neutro', 'RP_Valgo'], 3, ylabel='')
column_names = ['Arco normal', 'Arco Aplanado', 'Arco elevado', 'PIe cavo posterior', 'PIe cavo anterior', 'M1 DFx', 'M5 Hipermovil', 'M5 Dfx', 'Arco transverso disminuido', 'M1 PFx', 'Cavo Col medial', 'M5 PFx', 'Cavo col Lateral', 'Arco transverso aumentado', 'M1 Hipermovil', 'MTF1 Normal', 'HLF', 'HL', 'HR', 'HAV', 'Index Minus', 'Index plus-minus', 'Index Plus', 'Col lat corta', 'Col lat larga']
plot_categorical_columns(ib_resport2_df, column_names, 4, ylabel='')
plot_categorical_columns(ib_resport2_df, ['Pie griego', 'Pie cuadrado', 'Pie egipcio'], 3, ylabel='')
column_names = ['FPI_1_I', 'FPI_1_D', 'FPI_2_I', 'FPI_2_D', 'FPI_3_I', 'FPI_3_D', 'FPI_4_I', 'FPI_4_D', 'FPI_5_I', 'FPI_5_D', 'FPI_6_I', 'FPI_6_D']
plot_numerical_columns(ib_resport2_df, column_names, 4, ylabel='')
column_names = ['FPI_Total_I', 'FPI_Total_D']
plot_numerical_columns(ib_resport2_df, column_names, 2, ylabel='')
df[['FPI_1_I', 'FPI_1_D', 'FPI_2_I', 'FPI_2_D',
'FPI_3_I', 'FPI_3_D', 'FPI_4_I', 'FPI_4_D',
'FPI_5_I', 'FPI_5_D', 'FPI_6_I', 'FPI_6_D',
'FPI_Total_I', 'FPI_Total_D']].describe()
| FPI_1_I | FPI_1_D | FPI_2_I | FPI_2_D | FPI_3_I | FPI_3_D | FPI_4_I | FPI_4_D | FPI_5_I | FPI_5_D | FPI_6_I | FPI_6_D | FPI_Total_I | FPI_Total_D | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| count | 861 | 862 | 862 | 862 | 861 | 862 | 862 | 862 | 861 | 862 | 862 | 861 | 862 | 862 |
| unique | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 4 | 5 | 5 | 22 | 23 |
| top | 2 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 6 | 5 |
| freq | 275 | 279 | 350 | 347 | 360 | 375 | 364 | 337 | 368 | 363 | 421 | 416 | 85 | 84 |
Análisis basado en las frecuencias de cada ítem del FPI:
FPI_1 (Talus): Los valores oscilan entre -2 y 2, donde los números negativos indican una posición supinada y los números positivos una pronada. La mayoría de las frecuencias caen en el rango de 0 a 2, lo que sugiere una tendencia hacia una postura neutral o ligeramente pronada en ambos pies, con una proporción menor de supinación.FPI_2 (Curvatura lateral del arco): Similar a FPI_1, hay una tendencia a la postura neutral o pronada, con valores que oscilan principalmente entre 0 y 1. Esto indica una curvatura lateral del arco desde normal hasta pronada, con menos individuos mostrando supinación.FPI_3 (Calcáneo): La mayoría de las personas tienden a tener una posición del calcáneo neutra o pronada, con una presencia significativa de postura pronada.FPI_4 (Prominencia del talón): La mayoría de las personas tienen una prominencia del talón neutra, seguida de una postura pronada.FPI_5 (Altura del arco y región del tarso): La altura del arco y la región del tarso también tienden a mostrar una postura más neutral o pronada.FPI_6 (Alineación del antepié): La alineación del antepié generalmente es neutra, con menos casos de pronación y supinación.FPI_Total: Al sumar los componentes del FPI para el pie izquierdo y derecho, la mayoría de los individuos tienen un puntaje total que sugiere una postura del pie desde neutral hasta moderadamente pronada. Muy pocos individuos presentan posturas extremadamente pronadas o supinadas.Estas observaciones sugieren que, en esta muestra, la postura del pie tiende hacia la neutralidad con una ligera inclinación hacia la pronación en ambos pies. Sería interesante correlacionar estos hallazgos con otras variables como la incidencia de lesiones, tipo de actividad física o deportiva, y la necesidad de soporte o corrección ortopédica.
plot_boxplot(ib_resport2_df, title="Distribución de Características Clínicas")
corr_matrix = df[['Peso', 'Altura', 'Footstrike Type_run', 'Max Pronation Velocity_run', 'FPI_1_I', 'FPI_1_D', 'FPI_2_I', 'FPI_2_D', 'FPI_3_I', 'FPI_3_D', 'FPI_4_I', 'FPI_4_D', 'FPI_5_I', 'FPI_5_D', 'FPI_6_I', 'FPI_6_D', 'FPI_Total_I', 'FPI_Total_D']].corr()
plot_heatmap(corr_matrix=corr_matrix, figsize=(14, 12), cmap='GnBu', title='', annot=True)
column_names = ['Tibia vara proximal', 'Tibia Vara distal', 'Rotula divergente', 'Rotula descendida', 'Rotula convergente', 'Rotula ascencida', 'Genu valgo', 'Genu normal', 'Genu varo', 'Genu recurvatum', 'Genu neutro', 'Genu flexum', 'Lunge']
plot_categorical_columns(ib_resport2_df, column_names, 3, ylabel='')
column_names = ['Pierna Corta', 'Ober Friccion', 'Popliteo', 'AP Normal ABD-AD', 'AP Abducto']
plot_categorical_columns(ib_resport2_df, column_names, 3, ylabel='')
column_names = ['PNCA AP Varo', 'PNCA AP Neutro', 'PNCA AP Valgo', 'PNCA RP Varo', 'PNCA RP Neutro', 'PNCA RP Valgo']
plot_categorical_columns(ib_resport2_df, column_names, 3, ylabel='')
column_names = ['T_Hintermann', 'Jack Normal', 'Jack R aumentada', 'Jack No reconstruye', 'Jack R disminuida', 'Pron max Normal', 'Pronación no disponible', '2Heel Raise', 'Heel Raise']
plot_categorical_columns(ib_resport2_df, column_names, 3, ylabel='')